学习重点:

  • 根据用途,函数可以大致分为算术函数、字符串函数、日期函数、转换函数和聚合函数。
  • 函数的种类很多,无需全部记住,只需记住具有代表性的函数就可以了,其他的使用的时再查询。

所谓函数就是输入某一个值得到相应输出结果的功能。输入值称为参数(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的值,参数是可变的,因此可以根据需要无限增加