我的工作中SQL学习

    xiaoxiao2021-04-03  33

     

    一、Decode()函数

    1、表达式:decode(条件 ,值1,翻译值1,值2,翻译值2,...值n,翻译值n, 缺省值)

    2、解释:

    if (条件==值1)        return(翻译值1)

    Else  if(条件==值2)   return(翻译值2)

    ......

    Elseif (条件==值n)    return(翻译值n)

    else                return(缺省值)

     

    二、Round()函数

    1、表达式:round(列名,返回的小数位数)

    2、解释:select round(money,0) from表名

    原数据为 money:2.3   查询完后成2

     

    三、Ceil()函数

    1、表达式:ceil(X)

    2、解释:函数返回的最小整数的值不小于X 

       Select celi(3.4) from dual; 值为4

    3、round和ceil对比

     

     

    四、Sign()函数

       1、表达式:select sign(n) from dual

       2、解释:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0

     

    五、Cast()用法

           1、表达式:cast(列名/值/字符串 as 数据类型)

           2、解释:select cast(id as int ) id from表名

     

    六、Nvl()函数和Nvl2()函数

           1、表达式:nvl(表达式1,表达式2);nvl2(表达式1,表达式2,表达式3)

           2、解释:如果表达式1为空,则返回表达式2的值;表达式1不为空,返回表达式1的值

                    如果表达式1不为空,则返回表达式2的值;表达式1为空,返回表达式3的值

     

    七、层次化查询(即树形结构查询)

           1、表达式:select [level],colunm,expression from table_name [where条件1] [start with条件2] [connect by prior条件3]

           2、解释:level:伪列,用于表示树的层次

                    条件2:层次查询的起始条件,指定阶层的根

                    条件3:定义父节点和子节点之间的关系,prior指定父节点。作为运算符,prior和加(+)减(-)运算的优先级相同。

     

    八、转换函数

       1、表达式:①to_date(char[,format_model])       ②to_char(date,format_model])

       2、解释:to_char(now(),'Day, HH12:MI:SS')  结果'Tuesday , 05:39:18'

     

    九、其他

       1、null表达式:is null / is not null  错误的=null / !=null

       2、in表达式:in的用法是多个or

       3、order by表达式:只能用在最外层查询后面

       4、substr(x,starti_ndex,length):substr(‘字符串’,开始的下标,要取得长度)

       5、有时候为了方便备份(或历史数据归档),习惯把A表的数据到B表,用到 insert into B select * from A ,使用这句话的时候一定要注意下会不会锁A表,导致正在对A的操作全部失败。

       6、有一些场景因为不能优化sql或各种原因导致sql不走索引,这个时候就可以用 force index强制走索引,比如select * from A force index A.id

    转载请注明原文地址: https://ju.6miu.com/read-665915.html

    最新回复(0)