zoukankan      html  css  js  c++  java
  • MySQL(三)--函数与谓词

    前文已有涉及,这里作为总结重新整理一下。

    一、函数

    1、算术函数

    NUMERIC 是大多数 DBMS 都支持的一种数据类型,通过 NUMBERIC ( 全体位数, 小数位数 ) 的形式来指定数值的大小。

    -- +-*/
    
    --余数
    SELECT n, p, MOD(n, p) AS mod_col FROM SampleMath;
    
    --绝对值
    SELECT m, ABS(m) AS abs_col FROM SampleMath;
    
    --四舍五入
    SELECT m, n, ROUND(m, n) AS round_col FROM SampleMath;
    

    2、字符串函数

    --字符串拼接
    SELECT str1, str2, str3, CONCAT(str1, str2, str3) AS str_concat FROM SampleStr
    
    --字符串长度
    SELECT str1, LENGTH(str1) AS len_str FROM SampleStr;
    
    --大小写转换
    SELECT str1, UPPER/LOWER(str1) AS low_str FROM SampleStr WHERE str1 IN ('ABC', 'aBC', 'abc')
    
    --字符串替换str1中的str2换为str3
    SELECT str1, str2, str3, REPLACE(str1, str2, str3) AS rep_str FROM SampleStr;
     
    --字符串截取 FROM截取的起始位置FOR截取的字符数
    SELECT str1, SUBSTRING(str1 FROM 3 FOR 2) AS sub_str FROM SampleStr;
    

    3、日期函数

    --当前日期
    SELECT CURRENT_DATE;
    
    --当前时间
    SELECT CURRENT_TIME;
    
    --当前时间戳
    SELECT CURRENT_TIMESTAMP;
    
    --截取日期元素
    SELECT CURRENT_TIMESTAMP,
           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、转换函数

    --类型转换
    SELECT CAST('0001' AS SIGNED INTEGER) AS int_col;
    SELECT CAST('2009-12-14' AS DATE) AS date_col;
    
    --将 NULL 转换为其他值
    --返回可变参数中左侧开始第 1 个不是 NULL 的值
    SELECT COALESCE(NULL, 1)                  AS col_1,
           COALESCE(NULL, 'test', NULL)       AS col_2,
           COALESCE(NULL, NULL, '2009-11-01') AS col_3;
    

    5、聚合函数

    COUNT、SUM、AVG、MAX、MIN

    更多函数与运算符

    二、谓词

    谓词的作用就是“判断是否存在满足某种条件的记录”。如果存在这样的记录就返回真(TRUE),如果不存在就返回假(FALSE)。

    --部分一致查询
    LIKE
    
    --范围查询
    BETWEEN
    
    --判断是否为NULL
    IS NULL、IS NOT NULL
    
    --OR 的简便用法
    IN
    
    --谓词的主语是“记录”...没懂!
    EXISTS
    

    三、CASE 表达式

    --格式
    CASE WHEN <求值表达式> THEN <表达式>
         WHEN <求值表达式> THEN <表达式>
         WHEN <求值表达式> THEN <表达式>
           .
           .
           .
         ELSE <表达式>
    END
    
    -- 使用搜索CASE表达式的情况
    SELECT product_name,
          CASE WHEN product_type = '衣服'
               THEN 'A :' | |product_type
               WHEN product_type = '办公用品'
               THEN 'B :' | |product_type
               WHEN product_type = '厨房用具'
               THEN 'C :' | |product_type
               ELSE NULL
           END AS abc_product_type
      FROM Product;
    
    
    -- 使用简单CASE表达式的情况
    SELECT product_name,
           CASE product_type
                WHEN '衣服'      THEN 'A :' || product_type
                WHEN '办公用品'  THEN 'B :' || product_type
                WHEN '厨房用具'  THEN 'C :' || product_type
                ELSE NULL
            END AS abc_product_type
      FROM Product;
    
    --使用IF代替CASE表达式
    SELECT  product_name,
           IF( IF( IF(product_type = '衣服',
                       CONCAT('A :', product_type), NULL)
                   IS NULL AND product_type = '办公用品',
                       CONCAT('B :', product_type),
               IF(product_type = '衣服',
                  CONCAT('A :', product_type), NULL))
                      IS NULL AND product_type = '厨房用具',
                         CONCAT('C :', product_type),
                      IF( IF(product_type = '衣服',
                           CONCAT('A :', product_type), NULL)
                   IS NULL AND product_type = '办公用品',
                      CONCAT('B :', product_type),
               IF(product_type = '衣服',
                  CONCAT('A :', product_type),
             NULL))) AS abc_product_type
     FROM Product;
    
  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/lidyan/p/7086981.html
Copyright © 2011-2022 走看看