zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

常用的数据库函数_数据库中自定义函数

数据库 函数 常用 自定义
2023-06-13 09:15:15 时间

大家好,又见面了,我是你们的朋友全栈君。

1.COALESCE();

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

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

语法:

COALESCE ( expression [ ,...n ] ) 

如果所有参数均为 NULL,则 COALESCE 返回 NULL。至少应有一个 Null 值为 NULL 类型。尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL 下面我们来看一个例子: 
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);

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210757.html原文链接:https://javaforall.cn