常用的数据库函数


1.COALESCE();

很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用。

返回其参数中第一个非空表达式 

语法: 

COALESCE ( expression [ ,...n ] ) 

如果所有参数均为 NULL,则 COALESCE 返回 NULL。至少应有一个 Null 值为 NULL 类型。尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL


下面我们来看一个例子:




SELECT COALESCE(NULL,NULL,NOW()) TIME;

结果如下:

第一第二个值都为null,则返回第三个不为null的值返回当前时间;

2.DECODE();

用法1: 
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF


用法2:

decode(字段或字段的运算,值1,值2,值3)

       这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
 当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

其实它的用法和case when then else end 有点像,但是语法更简洁;


下面再给大家举个例子:

person表中有如下数据:


SQL:

SELECT NAME,DECODE(sex,1,"男",2,"女","太监") FROM person;
结果想必就不用我说了吧。
有一点需要大家注意的是MySQL的docode函数用法和oracle有所不同,这里就不一一赘述了...


3.SUBSTRING();

SUBSTRING ( expression, start, length ) 

参数 
expression 
字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。 

start 
整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置,索引是从1开始。 

length 
整数或可以隐式转换为 int 的表达式,指定子字符串的长度。经测试,暂且发现只能是非负数

返回值

1.如果 expression 是一种支持的二进制数据类型,则返回二进制数据,这种情况我们暂且不讨论。
2.如果 expression 是一种支持的字符数据类型,则返回字符数据。

(1)如果 start的索引是从1开始,则从表达式的第一个字符开始进行字符串截取,从2开始就从表达式的第二个字符开始截取,以此类推。

例如:

 select SUBSTRING('abcde',1,2) 返回结果 ab

 select SUBSTRING('abcde',2,3) 返回结果 bcd

 select SUBSTRING('abcde',1,0) 返回结果为空

 select SUBSTRING('abcde',0,8) 返回结果为abcde,注意后面没有空格了。

(2) 如果start的索引是从小于1(0或负数)开始,则返回长度等于从1开始,截取长度为 length - ((start - 1)的绝对值), 如果这个差为负数就返回空

画个图理解这种情况(比如SUBSTRING('abcde',0,2)返回a):

坐标:0       1         2     3     4    5
内容:空      a                b         c     d      e
截取:从此截取        截取到这里结束

4.ROUND();

ROUND ( numeric_e-xpression , length [ , function ] )

这个比较简单,举个例子相信大家就能明白:

SELECT ROUND(12.111,2);

SELECT ROUND(12.111,1);


好的,今天的学习到此结束。。





猜你喜欢

转载自blog.csdn.net/qq_40992849/article/details/80982950