一、空值判断函数
1.COALESCE(n1,n2,…,nx):返回其参数中第一个非空的值,如果所有参数均为NULL,则返回NULL。如果参数为多媒体数据类型,如TEXT类型,则系统会将TEXT类型先转换为VARCHAR 类型或VARBINARY类型,转换的最大长度为8188,超过部分将被截断。
SELECT COALESCE(NULL,TIME '12:00:00',TIME '11:00:00');
2.IFNULL(n1,n2):当表达式n1为非NULL时,返回n1;若 n1为NULL,则返回表达式n2的值。 若n1与n2为不同数据类型时,DM会进行隐式数据类型转换,若数据类型转换出错,则会报错。
SELECT IFNULL(NULL,3);
3.ISNULL(n1,n2):当表达式n1为非空时,返回n1;若 n1为空,则返回表达式n2的值。n2的数据类型应能转为n1的数据类型,否则会报错。
select isnull(null,3);
4.NULLIF(n1,n2):如果n1=n2,返回NULL,否则返回n1。
select nullif(2,2);
5.NVL(n1,n2):返回第一个非空的值。若n1与n2为不同数据类型时,DM会进行隐式数据类型 转换,若数据类型转换出错,则会报错。
6.NULL_EQU(n1,n2):返回两个类型相同的值的比较,当 n1=n2 或 n1、n2 两个值中出现 null 时, 返回 1。类型可以是 INT、BIT、BIGINT、FLOAT、DOUBLE、DEC、VARCHAR、DATE、 TIME、TIME ZONE、DATETIME、DATETIME ZONE、INTERVAL等。
select null_equ(1,null);
二、类型转换函数
1.CAST(value AS type) :将参数 value 转换为 type 类型返回。类型之间转换的相容性如下表所示:表中,“允许”表示这种语法有效且不受限制,“-”表示语法无效,“受限”表示转换还受到具体参数值的影响。
SELECT CAST(100.5678 AS VARCHAR(8));
2.CONVERT(type,value):将参数 value 转换为 type 类型返回。其类型转换相容矩阵与函数 CAST()的相同。
3.HEXTORAW (string):将由string表示的二进制字符串转换为一个binary数值类型。
SELECT HEXTORAW ('abcdef');
4.RAWTOHEX (binary):将RAW类数值binary转换为一个相应的十六进制表示的字符串。binary中的 每个字节都被转换为一个双字节的字符串。 RAWTOHEX和HEXTORAW是两个相反的函数。
SELECT RAWTOHEX('达梦数据库有限公司');
5.BINTOCHAR (binary):将数值binary转换为字符串。
SELECT BINTOCHAR ('0x61626364');
6.TO_BLOB (varbinary):将数值varbinary转换为blob。
三、其他函数
1.DECODE(exp, search1, result1, … searchn, resultn[,default]):查表译码,DECODE函数将exp与search1,search2, … searchn相比较, 如果等于searchx,则返回 resultx,如果没有找到匹配项,则返回 default, 如果未 定义default,返回NULL。
SELECT DECODE(3, 1, 'A', 2, 'B', 'C');
2.ISDATE(exp):判断给定表达式是否为有效的日期,是返回1,否则返回0。
select ISDATE('2020/03/20');
3.ISNUMERIC(exp):判断给定表达式是否为有效的数值,是返回1,否则返回0。
SELECT ISNUMERIC('2a');
4.DM_HASH (exp):根据给定表达式生成HASH值,返回结果为整型。
SELECT DM_HASH('DM HASH VALUE');
5.LNNVL(condition):如果condition表达式计算结果值为FALSE或者UNKNOWN时,返回TRUE,计算为TRUE时,则返回FALSE。
6.LENGTHB(value):返回value的字节数。value为CHAR/VARCHAR/BINARY/VARBINARY/BLOB/CLOB类型的值。
学习函数,有一点体会是在写脚本的时候,你有时会要用到函数,所以学习函数有一定的必要。