赞
踩
目录
什么情况下使用 SQL 函数?为什么使用 SQL 函数有时候会带来问题?
首先说什么是函数。函数就是我们用的比较多的,通用的代码封装起来。用的时候只需要通过函数名称并输入参数的方式来调用。这样可以降低代码的耦合性,减少代码的冗余,提高编程的灵活度和效率。
SQL中的函数一般都是加载到数据之后,对结果数据进行操作,得到我们想要的值。
SQL有内置函数,也可以自定义函数,内置函数一般对不同的数据库具有通用性
内置函数分类:
举几个例子:
- SELECT ABS(-2)#运行结果为 2
-
- SELECT MOD(101,3)#运行结果 2
-
- SELECT ROUND(37.25,1)#运行结果 37.3
- SELECT CONCAT('abc', 123)#运行结果为 abc123
- SELECT LENGTH('你好')#运行结果为 6
- SELECT CHAR_LENGTH('你好')#运行结果为 2
- SELECT LOWER('ABC')#运行结果为 abc
- SELECT UPPER('abc')#运行结果 ABC
- SELECT REPLACE('fabcd', 'abc', 123)#运行结果为 f123d
- SELECT SUBSTRING('fabcd', 1,3)#运行结果为 fab
使用都很简单,基本看函数名称就知道是用来做什么的
使用示例:
- SELECT CURRENT_DATE() #运行结果为 2019-04-03
- SELECT CURRENT_TIME() #运行结果为 21:26:34
- SELECT CURRENT_TIMESTAMP() #运行结果为 2019-04-03 21:26:34
- SELECT EXTRACT(YEAR FROM '2019-04-03') #运行结果为 2019
- SELECT DATE('2019-04-01 12:00:05') #运行结果为 2019-04-01
这里需要注意的是:DATE 日期格式必须是 yyyy-mm-dd 的形式。如果要进行日期比较,就要使用 DATE 函数,不要直接使用日期与字符串进行比较。
使用示例:
- SELECT CAST(123.123 AS INT) #运行结果会报错
- SELECT CAST(123.123 AS DECIMAL(8,2)) #运行结果为 123.12
- SELECT COALESCE(null,1,2) #运行结果为 1
CAST 函数在转换数据类型的时候,不会四舍五入,如果原数值有小数,那么转换为整数类型的时候就会报错
不过可以指定转化的小数类型,在 MySQL 和 SQL Server 中,可以用DECIMAL(a,b)来指定:
如DECIMAL(8,2):
所以SELECT CAST(123.123 AS DECIMAL(8,2))的转换结果为 123.12。
SQL函数在不同的DBMS之间的移植性很差,这归咎于DBMS之间的差异性很大,不同的DBMS可能对同一种函数的实现是不一样的。所以使用函数是需要谨慎对待的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼接函数为Concat()。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。