——— 核心函数————–
abs(x)
abs函数会尝试将当前字段值转换成整型,再取绝对值。
abs(x)的返回值有以下几种情况:
- x值为正值和0,abs(x)函数返回x本身。
- x为负值,abs(x)函数返回x的绝对值,也就是-x.
- x为null,abs(x)函数返回为null.
- x为字符串、Blob等不能转换为数值的类型,abs(x)函数返回0.
- 如果x的值超出64位整数值范围,abs(x)函数会抛出一个溢出错误。
changes函数
使用changes函数可以获取最近一次执行SQL语句影响的记录行数。
insert into table values(1,"小张");
select changes();
coalesce函数
返回第一个不为null的字段值。
select coalesce(name,id) as values from table1;
length(x)
顾名思义,取长度值的。
length(x)的返回值有以下几种情况:
- x为字符串类型,返回值为字符串中包含的字符数。
- x为Blob类型的值,返回二进制数据中包含的字节数。
- x为null,abs(x)函数返回为null.
- x为null值,返回null。
- x为数值型,length会将数值作为字符串处理。例如,length(123)的值是3。
like函数和like子句
“y like x”子句和like(x,y)函数功能完全相同,都可以使用通配符对字符串进行匹配。例如“%”代表0或多个任意字符串,“_”表示任意的单个字符。虽然like子句和like函数功能相同,但x,y的位置刚好相反(like函数这里x表示含通配符的字符串,y表示待匹配的字符串)。
使用like函数的SQL语句:
select * from table1 where like('%bill%',name);
使用like子句的SQL语句:
select * from table1 where name like '%bill%';
nullif(x,y)
当x,y值不同时,返回x;
当x,y相同时,返回null;
select nullif(20,30); //输出20
select nullif(20,20);//输出null
sbustr函数
截取字符串的子字符串。
substr有substr(x,y)和snustr(x,y,z),其中x是原字符串,y是要截取的字符串的第一个字符在原字符串中的位置,z表示要截取的字符串的长度。如果不指定z,substr会截取y后的所有字符串。如果y为正值,表示起始位置从原字符串左侧开始。如果y为负值,表示起始位置从原字符串右侧开始。如果z为负数,会取z的绝对值。
//从"abcdefg"的第2个位置截取后面所有的字符串,结果是"bcdefg"
select substr('abcdefg',2)
//从"abcdefg"的第2个位置截取长度为3的字符串,结果是"bcd"
select substr('abcdefg',2,3)
//从"abcdefg"右侧第2个位置截取所有的字符串,结果为"fg"
select substr('abcdefg',-2)
//从"abcdefg"右侧第4个位置截取长度为4的字符串,结果为"de"
select substr('abcdefg',-4,2)
typeof函数
获取当前字段的数据类型
select typeof(filed1) from table1;