一、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