学习重点:
- 根据用途,函数可以大致分为算术函数、字符串函数、日期函数、转换函数和聚合函数。
- 函数的种类很多,无需全部记住,只需记住具有代表性的函数就可以了,其他的使用的时再查询。
所谓函数就是输入某一个值得到相应输出结果的功能。输入值称为参数(parameter)输出值称为返回值;
函数
算术函数:
1)ABS函数:计算绝对值的函数
用法:ABS(数值)
2)ROUND函数:用来进行四舍五入操作
用法:ROUND(对象数值,保留小数的位数)
字符串函数:
1)||函数:拼接字符串函数
用法:字符串1||字符串2
在实际的业务中,我们经常碰到abc+de=abcde这样希望将字符串进行拼接的情况,在SQL中,可以通过由两条并列的竖线变换成‘||“函数来实现;进行字符串拼接时,如果其中包含NULL,那么得到结果也是NULL。
注:‘||’在SQL Server和MySQL中无法使用;SQL Server使用‘+’运算符来连接字符串。MySQL使用CONCAT函数完成字符串的拼接。
2)LENGTH函数:计算字符串长度函数
用法:LENGTH(字符串)
注:无法在SQL Server中使用,SQL Server用LEN函数计算字符串的长度
3)LOWER函数:小写转换,只针对英文字母使用,它将参数的字符全部转换为小写,此外并不影响原本就是小写的字符
用法:LOWER(字符串)
4)REPLACE函数:字符串替换
用法:REPLACE(对象字符串,替换前的字符串,替换后的字符串)
5)SUBSTRING函数:字符串的截取(PostgreSQL/MySQL专用语法)
SUBSTRING(对象字符串 FROM 截取的起始位置 FOR 截取的字符数)
使用SUBSTRING函数可以截取出字符串中的一部分字符串,截取的起始位置从字符最左侧开始计算。
SQL Server:
SUBSTRING(对象字符串,截取的起始位置,截取的字符数)
Oracle和DB2:
SUBSTR(对象字符串,截取的起始位置,截取的字符数)
6) UPPER函数:大写转换,只针对英文字母使用,它将参数的字符全部转换为大写,此外并不影响原本就是大写的字符。
日期函数
1)CURRENT_DATE函数:当前日期
用法:CURRENT_DATE
CURRENT_DATE函数能够返回SQL执行的日期,也就是该函数执行的日期,由于没有参数,所以无需使用括号;执行的日期不同返回的值也不同,如果在2018年7月30号执行函数,会得到返回值‘2018-07-30’;
SQL Server:
使用CSAT(后述)函数将CURRENT_DATE转换为日期类型
select cast(current_timestamp as date) as cur_date
Orcale:
需要在FROM子句指定临时表(DUAL)
BD2:
需要在CURRENT和DATE之间添加半角空格,还需指定临时表SYSIBM.SYSDUMMY1
2) CURRENT_TIME函数:当前时间
用法:CURRENT_TIME函数能够返回SQL执行的时间,也就是该函数执行的时间,由于没有参数,所以无需使用括号;
SQL Server:
使用CSAT(后述)函数将CURRENT_TIME转换为日期类型
select cast(current_timestamp as time) as cur_date
Orcale:
需要在FROM子句指定临时表(DUAL)
BD2:
需要在CURRENT和TIME之间添加半角空格,还需指定临时表SYSIBM.SYSDUMMY1
3)CURRENT_TIMESTAMP 函数:当前日期和时间
CURRENT_TIMESTAMP函数具有CURRENT_DATE+CURRENT_TIME的功能,使用该函数可以同时得到当前日期和时间,当然也可以从结果中截取时间;
注:Orcale与DB2注意事项与CURRENT_Date相同
4)EXTRACT函数:截取日期元素
用法:EXTRACT(日期元素 FROM 日期)
EXTRACT函数可以截取出日期数据中的一部分,例如‘年’、‘月’、或者‘小时’、‘秒’等,该函数返回值不是日期类型而是数值类型
注:Orcale与DB2注意事项与CURRENT_Date相同
转换函数
转换在SQL中有两层意思,一是数据类型的转换,简称‘数据转换’,另一层意思是值的转换;
1)CAST函数:类型转换
用法:CAST(转换前的值 AS 想要转换的数据类型)
进行类型转换需要使用CAST函数,之所以需要进行类型转换,是因为可能会插入与表中数据类型不匹配的数据,或者在进行运算时,由于数据类型不一致发生了错误,又或者是进行自动类型转换造成了处理速度的低下。
SQL Server/PostgreSQL:
SELECT CAST('001' AS INTEGER)AS int_col;
MySQL:
SELECT CAST('001' AS SIGEND_INTEGER)AS int_col;
Orcale:
SELECT CAST('001' AS INTEGER)AS int_col
FROM DUAL;
DB2:
SELECT CAST('001' AS INTEGER)AS int_col
FROM SYSIBM.SYSDUMMY1;
2)COALESCE函数:将NULL转换为其他值
用法:COALESCE(数据1,数据2,数据3....)
COALESCE是SQL特有的函数,该函数会返回可变参数中左侧开始第一个不是NULL的值,参数是可变的,因此可以根据需要无限增加