zoukankan      html  css  js  c++  java
  • SQL基础学习_05_函数、谓词、CASE表达式

    函数

    算术函数

    1. 四则运算: +、-、*、/ 

    2. ABS:求绝对值, ABS(数值)

    3. MOD: 求余,MOD(被除数,除数)

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

    字符串函数

    1. 字符串拼接: ||, str1 || str2 || str3 || … || strn  AS str_all

    2. 字符串长度:LENGTH,LENGTH(str1) AS len_str1

    3. 小写转换:LOWER,LOWER(str1) AS low_str

    4. 大写转换:UPPER,UPPER(str1) AS up_str

    5. 字符串替换:REPLACE,REPLACE(替换对象, 被替换的字符串, 替换后的字符串) AS rep_str  :如果替换对象中不含有被替换字符串,则不进行替换操作

    6. 字符串截取:SUBSTRING,SUBSTRING(对象字符串 FROM 起始位置  FOR 截取的长度) AS sub_str

    日期函数

    1. CURRENT_DATE:不需要参数,直接返回当前日期,显示格式:yyyy-mm-dd

    2. CURRENT_TIME:不需要参数,直接返回当前时间,显示格式:hh:mm:s

    3. CURRENT_TIMESTAMP:不需要参数,同时获得日期和时间,也可以进行截取操作

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

        日期元素有:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND

        例如:

        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 CURRNR_TIMESTAMP) AS second;   

    转换函数

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

        例如:

        SELECT CAST(‘0001’ AS INTEGER ) AS int_col;        SQL Server/ PostgreSQL

        SELECT CAST(‘0001’ AS SIGNED INTEGER) AS int_col;     MySQL

        SELECT CAST(‘0001’ AS INTEGER) AS int_col  FROM DUAL;    Oracle

        SELECT CAST(‘0001’ AS INTEGER) AS int_col FROM SYSIBM.SYSDUMMY1;   DB2

        结果:

        int_col
        —————
                 1

    2.  COALESCE(数据1,数据2,数据3 ……) 返回左侧开始第一个不是NULL的值

    谓词

    LIKE

    like谓词用于查询字符串部分一致,类似于简化版正则表达式,其中%表示匹配任意字符任意格式,_表示匹配一个任意字符串

    例如:

    查询SampleLike表中,strcol列字符串中间含有ddd的行

    SELECT *
    FROM SampleLike
    WHERE strcol LIKE ‘%ddd%'

    其他类似于:’%ddd’ ,’ddd%’ , ‘_ddd’ 等简单模式的匹配

    BETWEEN

    相当于  >= AND <=,例如:

    SELECT shohin_mei, hanbai_tanka
    FROM Shohin
    WHERE hanbai_tanka BETWEEN 100 AND 1000

    IS NULL 、 IS NOT NULL

    用于判断是否为NULL值

     IN

    将多个OR条件合并,如:

    SELECT shohin_mei, shiire_tanka
    FROM Shohin
    WHERE shiire_tanka NOT IN (320, 500, 5000)

    注意:IN和NOT IN无法选取NULL值,NULL的判断只能用IS NULL 和IS NOT NULL

    配合子查询中返回多个值,可以灵活使用IN谓词来做选择

    如:

    SELECT shohin_mei, hanbai_tanka
    FROM Shohin
    WHERE shohin_id IN (SELECT shohin_id
                                         FROM TenpoShohin
                                         WHERE tenpo_id = ‘000C') 

    EXIST

    EXIST谓词用于判断是否存在满足某种条件的记录,多用于在子查询中替换IN达到相同目的的操作,如:

    SELECT shohin_mei, hanbai_tanka
    FROM Shohin AS S
    WHERE EXISTS ( SELECT *
                                   FROM TenpoShohin AS TS
                                   WHERE TS.tenpo_id = ‘000C’
                                   AND TS.shohin_id = S.shohin_id)

    ps. 个人感觉还是IN比较直观易用一些

    CASE表达式

    相当于switch语句,语法为:

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

    每一个WHEN 、THEN组合相当于switch中的一个case,最后的ELSE相当于default;

    CASE表达式常和SELECT结合:

    SELECT <列>,
        CASE WHEN <表达式>  THEN <表达式>
                   WHEN <表达式>  THEN <表达式>
                                   …
                   ELSE NULL
        END AS <名称>
    FROM <表>;

  • 相关阅读:
    racktable安装过程
    racktables
    EM上的按钮是方框的问题
    install oracle
    记一次ORACLE无法启动登陆事故
    安装rlwrap-0.37.tar.gz
    centos7 安装oracle 11g数据库
    centos 7 安装mariadb
    centos7 lamp
    Linux安全之SSH 密钥创建及密钥登录
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4693687.html
Copyright © 2011-2022 走看看