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;
    
  • 相关阅读:
    psy & vr
    psy 2
    psy
    linux c中select使用技巧
    hostent h_addr_list
    gethostbyname() -- 用域名或主机名获取IP地址
    c_select 调用参数说明
    [NYOJ 737] 石子合并(一)
    [HDU 1059] Dividing
    [HDU 1789] Doing Homework again
  • 原文地址:https://www.cnblogs.com/lidyan/p/7086981.html
Copyright © 2011-2022 走看看