一、nvl()函数:
(1)oracle中的nvl()函数:
语法:
nvl(expr1,expr2)
含义::
如果expr1为空那么返回expr2,如果expr1值不为空,则返回expr1。
(2)mysql中的”nvl()”函数:
语法:
if null(expr1,expr2)
含义::
如果expr1为空那么返回expr2,如果expr1值不为空,则返回expr1。
二、decode()函数:
(1)oracle中的decode()函数:
语法:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,默认值)
含义::
当条件的值等于值1的时候,返回值1,当条件的值等于值2的时候,返回值2,当条件的值等于值n的时候,返回值n,如果条件与值1-值n都不想等,则返回默认值。相当于java中的if-else。
(2)mysql中的”decode()”函数:
语法:
ifnull(
etl(
filed(col,…)
)
)
filed函数:
语法:filed(str,str1,str2,str3……..)
含义:返回str在str1,str2,str3…..中的位置,假如str=str1,则返回1,;假如str=str2,则返回2。。。。。假如str1-strn中都没有str的值,则返回0。
注意:如果str 为NULL,则返回值为0 ,原因是NULL不能同任何值进行同等比较。
elt函数:
语法:elt(N,str1,str2,str3,…strn)
含义:如果N=1,则返回str1,N=2,则返回str2,N>n,,则返回null。
ifnull函数:
语法:if null(expr1,expr2)
含义:如果expr1为空那么返回expr2,如果expr1值不为空,则返回expr1。
总结以上三个函数:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,默认值)
等价于:
ifnull(elt(filed(条件,值1,值2….值n),返回值1,返回值2…..返回值n),默认值)
三、分页:
(1)oracle中的分页:
语法:
select * from(select t.* ,rownum r from 表名 t)where r>10 and r<20;
注意:
(1)表名必须要取别名:表名 t
(2)*前面必须要指明表的别名
(3)rownum 这个字段必须要用别名:,rownum r
(4)分页的范围必须要用别名进行判断: r>10 and r<20
(2)mysql中的分页:
语法:
SELECT * FROM 表名 LIMIT 起始值-1, 取多少条记录 ;
举例:
SELECT * FROM 表名 LIMIT 20, 10 ;
说明:从第21条记录开始去10条记录,即取得是21,22,23,24,25,26,27,28,29,30这10条记录。
四、字符串截取:
(1)oracle中的字符串截取:
语法:
select substr(“目标字符串”,开始坐标,结束坐标) from dual;
注意:
oracle中的下标可以从0开始,也可以从1开始,而且两个效果是一样的,但是如果从-1开始则是取最后一个,截取长度这个参数将会失效
注意:
oracle中是没有substring这个函数的
(2)mysql中的字符串截取:
语法一:
select substr(“目标字符串”,开始坐标,截取长度) from dual;
注意:
1、myql中的下标不能从0开始
2、mysql下标也可以从-1开始,情况和orace一样
语法二:
select substring(“目标字符串”,开始坐标,截取长度) from dual;
注意:
myql中的substr和substring函数是一样的效果
语法三:
select mid(“目标字符串”,开始坐标,截取长度) from dual;
注意:
myql中的substr、mid和substring这三个函数是一样的效果
语法四:
select left(“目标字符串”,从左侧第一个开始的截取长度) from dual;
语法五:
select right(“目标字符串”,从右侧最后一个开始的截取长度) from dual;
五、结果集拼接(用,隔开):
(1)oracle中的wm_concat函数:
语法:
select 字段1 wm_concat(字段2) from 表名 group by 字段1;
注意:
wm_concat是分组函数,前面查询的字段需要在后面group by一下,如果不group by一个字段的话将会把所有行的字段2都用逗号拼接起来
例子:
(2)mysql中的group_concat函数:
语法:
select 字段1 group_concat(字段2) from 表名 group by 字段1;
注意:
1、group_concat也是分组函数,前面查询的字段同样需要在后面group by一下,如果不group by一个字段的话将会把所有行的字段2都用逗号拼接起来—–例子和oracle一样,这里就不举例
2、如果字段2中的值为null的时候,group_concat函数是不会留,给那个null值的,比如有三条记录,中间那条记录的字段2是null值,那么group_concat之后拼接出来的字段就只有两个值,即:记录1的字段2,记录3的字段2,而不是记录1的字段2,,记录3的字段2
六、uuid:
(1)oracle中获取uuid:
语法:
INSERT INTO 表名 VALUES ((select lower(sys_guid()) from dual), 值2, 值3);
(2)mysql中获取uuid:
语法:
INSERT INTO 表名 VALUES (replace(uuid(), ‘-‘,”), 值2,值3);
七、字符串转数字:
(1)oracle中数字转字符串:
语法:
select * from 表 order by to_number(字段);
(2)mysql中数字转字符串:
语法一:
select * from 表 where deleted=0 order by Convert(字段,int);
语法二:
select * from 表 where deleted=0 order by CAST(字段 as int);
语法三:
select * from 表 where deleted=0 order by (ordernumber+0);