SQL 函数、谓词、CASE 表达式

发布于 2020-07-22 19:48:02   阅读量 45  点赞 0  

一、函数

 SQL 中的函数可以分为以下几类:

  • 算数函数

  • 字符串函数

  • 日期函数

  • 转换函数(用来转换数据类型与值)

  • 聚合函数(用来进行数据聚合)


1. 算数函数

  1. ABS:绝对值函数
    ABS(数值)
    

  2. MOD:求余函数
    MOD(被除数,除数)
    

  3. ROUND:四舍五入函数
    ROUND(对象数值,保留的小数位数)
    


2. 字符串函数

  1. CONCAT:字符串拼接
    CONCAT(字符串1,字符串2,...)
    

  2. LENGTH:字符串长度
    LENGTH(字符串)
    

  3. LOWER:小写转换
    LOWER(字符串)
    

  4. UPPER:大写转换
    UPPER(字符串)
    

  5. REPLACE:字符串替换(将对象字符串A中的B替换成C)
    REPLACE(对象字符串A,替换前的字符串B,替换后的字符串C)
    

  6. SUBSTRING:字符串的截取
    SUBSTRING(对象字符串 FROM 截取起始位置 FOR 截取的字符数)
    


3.日期函数

  1. CURRENT_DATE:返回当前日期
    // 由于没有参数,故不用加括号
    CURRENT_DATE
    

  2. CURRNT_TIME:当前时间
    // 同样,无需加括号
    CURRENT_TIME
    

  3. CURRENT_TIMESTAMP:当前日期和时间
    CURRENT_TIMESTAMP
    

  4. EXTRACT:截取日期元素
    EXTRACT(日期元素 FROM 日期)
    

    使用EXTRACT函数可以使用关键字截取出日期数据中的一部分,如“年”、“月”或“小时”,“秒”:

    SELECT CURRENT_TIME,
        EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year,
        EXTRACT(MONTH FROM CURRENT_TIMESTAMP) AS month,
        EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS day,
        EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS hour,
        EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS minute,
        EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS second;
    


4. 转换函数

 转换主要分为数据类型的转换与值的转换。

  1. CAST:类型转换
    CAST(转换前的值 AS 想要转换的类型)
    

    若进行自动类型转换,会造成处理速度低下。CAST函数能够方便DBMS内部处理。

  1. COALESCE:将NULL转换为其他值。
    COALESCE(数据1,数据2,...);
    

    该函数会返回可变参数中从左开始第一个不是NULL的值。参数个数是可变的,因此可以根据需要无线增加。



二、谓词

 谓词用来判断是否满足特定条件,返回值为TRUE/FALSE/UNKNOWN

1. LIKE 字符串的部分一致查询

 用于进行字符串的部分一致查询,部分一致可以分为开头一致、中间一致和后方一致三种类型。

 控制符号%_的位置即可实现不同的一致类型。其中,%表示匹配任意字符串,_表示匹配任意字符:(设查询对象为字符串ddd

  • 开头一致:ddd%/ddd_

  • 中间一致:%ddd%/_ddd_

  • 结尾一致:%ddd/_ddd

开头/结尾一致的结果值要求目标字符串在最开始/结尾即可,无需含有其他字符。

中间一致无需严格要求目标字符串位于中间,故中间匹配会包含开头一致与结尾一致的结果。

SELECT ...
FROM ...
WHERE <待查询字段> LIKE "ddd%";


2. BETWEEN 范围查询

 使用BETWEEN能够限定一个中间区间,并且会包含临界值。这是一个简单的<=>=所做不到的。

SELECT ...
FROM ...
WHERE <待查询字段> BETWEEN <区间左值> AND <区间右值>;


3. IS NULL、IS NOT NULL 判断是否为 NULL

 为了选取判断数据是否为NULL,不能使用=/<>,而需要使用为此IS NULL/`IS NOT NULL。


4. IN 逻辑或的简便用法

 使用IN可以简便地表达多个逻辑或的组合。能将:

SELECT ...
FROM ...
WHERE purchase_price = 50
OR purchase_price = 100
OR purchase_price = 150
OR purchase_price = 200;

 简化为:

SELECT ...
FROM ...
WHERE purchase_price IN (50,100,150,200);

 也可以使用NOT IN来表否定。



三、CASE 表达式

CASE表达式是在区分情况时使用的,这种情况对应于编程中的条件分支。

CASE表达式的语法为:

CASE WHEN <求值表达式> THEN <表达式>
     WHEN <求值表达式> THEN <表达式>
     WHEN <求值表达式> THEN <表达式>
     ...
     ELSE <表达式>
END

CASE表达式会从第一句WHEN子句开始,对求值表达式求真值,若为真,则返回相应THEN子句的表达式的值;若为假,则跳转到下一条WHEN子句的求值。若所有WHEN子句皆为假,则返回ELSE子句中表达式的值。

CASE表达式在 SQL 语句执行时,会转化为一个值,即CASE表达式可以用于任何需要值的地方。

CASE表达式中ELSE子句也可以省略,此时默认ELSE NULL


Last Modified : 2020-07-30 13:31:30