常用的数据库函数_数据库中自定义函数
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
相关文章
- MySQL(七)MySQL常用函数详解数据库
- oracle的常用函数详解数据库
- Oracle instr函数详解数据库
- Oracle SQL之lag()和lead()函数使用详解数据库
- Mysql截取和拆分字符串函数用法详解数据库
- 的优化优化Oracle数据库下标的实践(oracle下标)
- MySQL Status Opened_tables 数据库状态作用意思及如何正确
- 库MySQL:探索二进制数据库之路(mysql二进制数据)
- 如何创建 MySQL 数据库?(mysql创建mysql)
- 如何正确卸载Oracle数据库(oracle 怎么卸载)
- 从远程海岸连接Oracle:简单而有效的解决方案(oracle客户端连接远程数据库)
- 使用Oracle内值联函数提升数据库性能(oracle内值联函数)
- MySQL数据库中的标准函数std函数(mysql中std函数)
- Oracle数据库中使用相减函数求差(oracle中相减的函数)
- 使用Oracle事件处理函数轻松管理数据库(oracle事件处理函数)
- Oracle数据库中的函数分类及其应用(oracle中的函数分类)
- MySQL数据库详细教程,逐步介绍MySQL基础知识SQL语法存储引擎表设计备份与恢复等内容,帮助初学者快速入门MySQL
- PHP中的MYSQL常用函数(php下操作数据库必备)