zoukankan      html  css  js  c++  java
  • 第五章 MySQL函数

    一、数学函数

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

    ABS(x) 用于返回 x 的绝对值

    mysql> SELECT ABS(2), ABS(-2.3), ABS(-33);

    +--------+-----------+----------+

    | ABS(2) | ABS(-2.3) | ABS(-33) |

    +--------+-----------+----------+

    | 2      | 2.3       | 33       |

    +--------+-----------+----------+

    (2) 返回圆周率的函数:PI()

    PI() 返回圆周率值

    mysql> SELECT PI();

    +----------+

    | PI()     |

    +----------+

    | 3.141593 |

    +----------+

    (3) 平方根函数:SQRT(x)

    SQRT(x) 返回非负数 x 的二次方根

    mysql> SELECT SQRT(9), SQRT(40), SQRT(-49);

    +---------+-------------------+-----------+

    | SQRT(9) | SQRT(40)          | SQRT(-49) |

    +---------+-------------------+-----------+

    | 3       | 6.324555320336759 | NULL      |

    +---------+-------------------+-----------+

    (4) 求余函数:MOD(x,y)

    MOD(x,y) 返回 x y 除后的余数,MOD(x,y) 对于带有小数部分的数值也起作用,

    它返回除法运算后的精确余数

    mysql> SELECT MOD(31,8), MOD(234,10), MOD(45.5,6);

    +-----------+-------------+-------------+

    | MOD(31,8) | MOD(234,10) | MOD(45.5,6) |

    +-----------+-------------+-------------+

    | 7         | 4           | 3.5         |

    +-----------+-------------+-------------+

    (5) 获取整数的函数:CEIL(x) CEILING(x) FLOOR(x)

    CEIL(x) 用于返回不小于 x 的最小整数值

    mysql> SELECT CEIL(-3.35), CEIL(3.35);

    +-------------+------------+

    | CEIL(-3.35) | CEIL(3.35) |

    +-------------+------------+

    | -3          | 4          |

    +-------------+------------+

    CEILING(x) 用于返回不小于 x 的最小整数

    mysql> SELECT CEILING(-3.35), CEILING(3.35);

    +----------------+---------------+

    | CEILING(-3.35) | CEILING(3.35) |

    +----------------+---------------+

    | -3  

               | 4             |

    +----------------+---------------+

    FLOOR(x) 返回不大于 x 的最大整数值

    mysql> SELECT FLOOR(-3.35), FLOOR(3.35);

    +--------------+-------------+

    | FLOOR(-3.35) | FLOOR(3.35) |

    +--------------+-------------+

    | -4           | 3           |

    +--------------+-------------+

    (6) 获取随机数的函数:RAND() RAND(x)

    RAND() 用于返回一个随机浮点值,范围在 0 ~ 1 之间

    mysql> SELECT RAND(), RAND(), RAND();

    +--------------------+--------------------+---------------------+

    | RAND()             | RAND()             | RAND()              |

    +--------------------+--------------------+---------------------+

    | 0.7393965169222994 | 0.5185907432051289 | 0.37476419599239175 |

    +--------------------+--------------------+---------------------+

    RAND(x) 用于返回一个随机浮点值,范围在 0~1 之间,x 被用作种子值,用来产生重复序列

    mysql> SELECT RAND(5), RAND(5), RAND(8);

    +---------------------+---------------------+---------------------+

    | RAND(5)             | RAND(5)             | RAND(8)             |

    +---------------------+---------------------+---------------------+

    | 0.40613597483014313 | 0.40613597483014313 | 0.15668530311126755 |

    +---------------------+---------------------+---------------------+

    (7) 四舍五入的函数:ROUND(x) ROUND(x,y)

    ROUND(x) 用于对 x 进行四舍五入

    mysql> SELECT ROUND(-1.14), ROUND(1.14);

    +--------------+-------------+

    | ROUND(-1.14) | ROUND(1.14) |

    +--------------+-------------+

    |           -1 |           1 |

    +--------------+-------------+

    ROUND(x,y) 用于对 x 进行四舍五入,并保留小数点后 y

    mysql> SELECT ROUND(1.38,1), ROUND(1.38,0), ROUND(232.38,-1), ROUND(232.38,-2);

    +---------------+---------------+------------------+------------------+

    | ROUND(1.38,1) | ROUND(1.38,0) | ROUND(232.38,-1) | ROUND(232.38,-2) |

    +---------------+---------------+------------------+------------------+

    |          1.4 |            1 |             230 |             200 |

    +---------------+---------------+------------------+------------------+

    (8) 截取数值的函数:TRUNCATE(x,y)

    TRUNCATE(x,y) 用于对 x 进行截取,结果保留小数点后 y

    mysql> SELECT TRUNCATE(1.31,1), TRUNCATE(1.99,1), TRUNCATE(1.99,0);

    +------------------+------------------+------------------+

    | TRUNCATE(1.31,1) | TRUNCATE(1.99,1) | TRUNCATE(1.99,0) |

    +------------------+------------------+------------------+

    |            1.3 |            1.9 |               1 |

    +------------------+------------------+------------------+

    (9) 符号函数:SIGN(x)

    SIGN(x) 用于返回参数 x 的符号,当 x 为负数时返回 -1 ,当 x 为正数时返回 1 , 当 x 为零时返回 0

    mysql> SELECT SIGN(-21), SIGN(0), SIGN(21);

    +-----------+---------+----------+

    | SIGN(-21) | SIGN(0) | SIGN(21) |

    +-----------+---------+----------+

    |      -1 |      0 |      1 |

    +-----------+---------+----------+

    (10) 幂运算函数:POW(x,y) POWER(x,y) EXP(x)

    POW(x,y) 用于返回 x y 次方的结果

    mysql> SELECT POW(2,4), POW(2,-4);

    +----------+-----------+

    | POW(2,4) | POW(2,-4) |

    +----------+-----------+

    |       16 |    0.0625 |

    +----------+-----------+

    (11) 对数运算函数:LOG(x) LOG10(x)

    LOG(x) 返回 x 的自然对数

    mysql> SELECT LOG(3), LOG(-3);

    +--------------------+---------+

    | LOG(3)             | LOG(-3) |

    +--------------------+---------+

    | 1.0986122886681098 |    NULL |

    +--------------------+---------+

    使用 LOG10(x) 计算以 10 为基数的对数

    mysql> SELECT LOG10(2), LOG10(100), LOG10(-100);

    +--------------------+------------+-------------+

    | LOG10(2)           | LOG10(100) | LOG10(-100) |

    +--------------------+------------+-------------+

    | 0.3010299956639812 |          2 |      NULL |

    +--------------------+------------+-------------+

    (12) 角度与弧度相互转换的函数:RADIANS(x) DEGREES(x)

    RADIANS(x) 用于将参数 x 由角度转化为弧度

    mysql> SELECT RADIANS(90), RADIANS(180);

    +--------------------+-------------------+

    | RADIANS(90)        | RADIANS(180)      |

    +--------------------+-------------------+

    | 1.5707963267948966 | 3.141592653589793 |

    +--------------------+-------------------+

     DEGREES(x) 用于将参数 x 由弧度转化为角度

    mysql> SELECT DEGREES(PI()), DEGREES(PI()/2);

    +---------------+-----------------+

    | DEGREES(PI()) | DEGREES(PI()/2) |

    +---------------+-----------------+

    |           180 |              90 |

    +---------------+-----------------+

    (13) 正弦函数和反正弦函数:SIN(x) ASIN(x)

    SIN(x) 用于返回 x 的正弦值,其中 x 为弧度值

    mysql> SELECT SIN(1), ROUND(SIN(PI()));

    +--------------------+------------------+

    | SIN(1)             | ROUND(SIN(PI())) |

    +--------------------+------------------+

    | 0.8414709848078965 |             0 |

    +--------------------+------------------+

    ASIN(x) 用于返回 x 的反正弦,即正弦为 x 的值

    mysql> SELECT ASIN(0.8414709848078965), ASIN(3);

    +--------------------------+---------+

    | ASIN(0.8414709848078965) | ASIN(3) |

    +--------------------------+---------+

    |             1 |    NULL |

    +--------------------------+---------+

    (14) 余弦函数和反余弦函数:COS(x) ACOS(x)

    COS(x) 用于返回 x 的余弦,其中 x 为弧度值

    mysql> SELECT COS(0), COS(PI()), COS(1);

    +--------+-----------+--------------------+

    | COS(0) | COS(PI()) | COS(1)             |

    +--------+-----------+--------------------+

    |      1 |        -1 | 0.5403023058681397 |

    +--------+-----------+--------------------+

    ACOS(x) 用于返回 x 的反余弦,即余弦是 x 的值

    mysql> SELECT ACOS(1), ACOS(0), ROUND(ACOS(0.5403023058681397));

    +---------+--------------------+---------------------------------+

    | ACOS(1) | ACOS(0)            | ROUND(ACOS(0.5403023058681397)) |

    +---------+--------------------+---------------------------------+

    |       0 | 1.5707963267948966 |                               1 |

    +---------+--------------------+---------------------------------+

    (15) 正切函数、反正切函数、余切函数:TAN(x) ATAN(x) COT(x)

    TAN(x) 返回 x 的正切,其中 x 为给定的弧度值

    mysql> SELECT TAN(0.3), ROUND(TAN(PI()/4));

    +---------------------+--------------------+

    | TAN(0.3)            | ROUND(TAN(PI()/4)) |

    +---------------------+--------------------+

    | 0.30933624960962325 |                  1 |

    +---------------------+--------------------+

     ATAN(x) 用于返回 x 的反正切,即正切为 x 的值

    mysql> SELECT ATAN(0.30933624960962325), ATAN(1);

    +---------------------------+--------------------+

    | ATAN(0.30933624960962325) | ATAN(1)  |

    +---------------------------+--------------------+

    |             0.3 | 0.7853981633974483 |

    +---------------------------+--------------------+

    COT(x) 用于返回 x 的余切

    mysql> SELECT COT(0.3), 1/TAN(0.3), COT(PI()/4);

    +--------------------+--------------------+--------------------+

    | COT(0.3)           | 1/TAN(0.3)         | COT(PI()/4)        |

    +--------------------+--------------------+--------------------+

    | 3.2327281437658275 | 3.2327281437658275 | 1.0000000000000002 |

    +--------------------+--------------------+--------------------+

    二、 字符串函数

    (1) 计算字符串长度的函数:CHAR_LENGTH(str) LENGTH(str)

    CHAR_LENGTH(str) 用于统计 str 的字符个数

    mysql>  SELECT CHAR_LENGTH('date'), CHAR_LENGTH('egg');

    +---------------------+--------------------+

    | CHAR_LENGTH('date') | CHAR_LENGTH('egg') |

    +---------------------+--------------------+

    |            4 |          3 |

    +---------------------+--------------------+

    LENGTH(str) 用于统计 str 的字节长度,使用 utf8 编码字符集时,一个汉字是3个字节,一个数字或字母是1个字节

    mysql> SELECT LENGTH('date'), LENGTH('egg');

    +----------------+---------------+

    | LENGTH('date') | LENGTH('egg') |

    +----------------+---------------+

    |         4 |       3 |

    +----------------+---------------+

    (2) 合并字符串的函数:CONCAT(s1,s2,...) CONCAT_WS(x,s1,s2,...)

    CONCAT(s1,s2,...) 用于合并字符串 s1, s2, ..... ,如果有一个参数为 NULL,则结果为 NULL

    CONCAT_WS(x,s1,s2,...) x 作为分隔符,将 s1, s2, .... 合并,如果分隔符为 NULL ,则结果为 NULL

    mysql> SELECT CONCAT_WS('-','1st','2nd','3rd'), CONCAT_WS(NULL,'1st','2nd','3rd');

    +----------------------------------+-----------------------------------+

    | CONCAT_WS('-','1st','2nd','3rd') | CONCAT_WS(NULL,'1st','2nd','3rd') |

    +----------------------------------+-----------------------------------+

    | 1st-2nd-3rd           | NULL                    |

    +----------------------------------+-----------------------------------+

    mysql> SELECT CONCAT('My','SQL','5.7'), CONCAT('My',NULL,'SQL');

    +--------------------------+-------------------------+

    | CONCAT('My','SQL','5.7') | CONCAT('My',NULL,'SQL') |

    +--------------------------+-------------------------+

    | MySQL5.7       | NULL           |

    +--------------------------+-------------------------+

    (3) 替换字符串的函数:INSERT(s1,x,len,s2)

    (1) INSERT(s1,x,len,s2) 用于返回字符串 s1,其子字符串起始于 x 位置和被字符串 s2 取代的 len 字符

    (2) 如果 x 超过字符串长度,则返回值为原始字符串,如果 len 的长度大于其他字符串的长度则从位置 x 开始替换

    (3) 如果任何一个参数为 NULL ,则返回值为 NULL

    mysql> SELECT INSERT('Quest', 2, 4, 'What') AS col1,

        -> INSERT('Quest', -1, 4, 'What') AS col2,

        -> INSERT('Quest', 3, 100, 'Wh') AS col3;

    +-------+-------+------+

    | col1  | col2  | col3 |

    +-------+-------+------+

    | QWhat | Quest | QuWh |

    +-------+-------+------+

    (4) 转换大小写的函数:LOWER(str) LCASE(str) UPPER(str) UCASE(str)

    LOWER(str) 用于将字符串 str 中的字母字符全部转换成小写字母

    mysql> SELECT LOWER('BEAUTIFUL'), LOWER('Well');

    +--------------------+---------------+

    | LOWER('BEAUTIFUL') | LOWER('Well') |

    +--------------------+---------------+

    | beautiful     | well     |

    +--------------------+---------------+

    LCASE(str) 用于将字符串 str 中的字母字符全部转换成小写字母

    mysql> SELECT LCASE('BEAUTIFUL'), LCASE('Well');

    +--------------------+---------------+

    | LCASE('BEAUTIFUL') | LCASE('Well') |

    +--------------------+---------------+

    | beautiful    | well      |

    +--------------------+---------------+

    UPPER(str) 用于将 str 中的小写字母转换成大写字母

    mysql> SELECT UPPER('black'), UPPER('BLacK');

    +----------------+----------------+

    | UPPER('black') | UPPER('BLacK') |

    +----------------+----------------+

    | BLACK    | BLACK    |

    +----------------+----------------+

    UCASE(str) 用于将 str 中的小写字母转换成大写字母

    mysql> SELECT UCASE('black'), UCASE('BLacK');

    +----------------+----------------+

    | UCASE('black') | UCASE('BLacK') |

    +----------------+----------------+

    | BLACK    | BLACK    |

    +----------------+----------------+

    (5) 获取指定长度的字符串的函数:LEFT(s,n) RIGHT(s,n)

    LEFT(s,n) 用于返回字符串 s 开始的最左边 n 个字符

    mysql> SELECT LEFT('football', 5);

    +---------------------+

    | LEFT('football', 5) |

    +---------------------+

    | footb        |

    +---------------------+

    RIGHT(s,n) 用于返回字符串 s 中右边 n 个字符

    mysql> SELECT RIGHT('football',4);

    +---------------------+

    | RIGHT('football',4) |

    +---------------------+

    | ball          |

    +---------------------+

    (6) 填充字符串的函数:LPAD(s1,len,s2) RPAD(s1,len,s2)

    LPAD(s1,len,s2) 返回字符串 s1 ,其左边由字符串 s2 填充到 len 字符长度,如果 s1 的长度大于 len ,则返回值被缩短至 len 长度

    mysql> SELECT LPAD('hello',4,'??'), LPAD('hello',10,'??');

    +----------------------+-----------------------+

    | LPAD('hello',4,'??') | LPAD('hello',10,'??') |    # 字符串'hello'长度大于4,不需要填充,只被缩短

    +----------------------+-----------------------+

    | hell          | ?????hello     |    # 字符串'hello'长度小于10,因此被填充

    +----------------------+-----------------------+

    RPAD(s1,len,s2) 返回字符串 s1 ,其右边由字符串 s2 填充到 len 字符长度,如果 s1 的长度大于 len ,则返回值被缩短至 len 长度

    mysql> SELECT RPAD('hello',4,'?'), RPAD('hello',10,'?');

    +---------------------+----------------------+

    | RPAD('hello',4,'?') | RPAD('hello',10,'?') |    # 字符串'hello'长度大于4,不需要被填充,因此被缩短至4

    +---------------------+----------------------+

    | hell         | hello?????     |          # 字符串'hello'长度小于10,因此被填充

    +---------------------+----------------------+

    (7) 删除空格的函数:LTRIM(s) RTRIM(s) TRIM(s)

    LTRIM(s) 用于删除字符串 s 左侧的空格

    mysql> SELECT LTRIM(' book ');

    +-----------------+

    | LTRIM(' book ') |

    +-----------------+

    | book        |

    +-----------------+

    RTRIM(s) 用于删除字符串 s 右侧的空格

    mysql> SELECT RTRIM(' book ');

    +-----------------+

    | RTRIM(' book ') |

    +-----------------+

    |  book       |

    +-----------------+

    TRIM(s) 用于删除字符串 s 两侧的空格

    mysql> SELECT TRIM(' book ');

    +----------------+

    | TRIM(' book ') |

    +----------------+

    | book       |

    +----------------+

    (8) 删除指定字符串的函数:TRIM(s1 FROM s)

    TRIM(s1 FROM s) 用于删除字符串 s 中两端所有的子字符串 s1 ,如果没有指定 s1 ,则默认删除字符串 s 两侧的空格

    mysql> SELECT TRIM('xy' FROM 'xyxyabcxy');

    +-----------------------------+

    | TRIM('xy' FROM 'xyxyabcxy') |

    +-----------------------------+

    | abc               |

    +-----------------------------+

    (9) 重复生成字符串的函数:REPEAT(s,n)

    REPEAT(s,n) 用于重复字符串 s n 表示重复多少次

    mysql> SELECT REPEAT('mysql',3);

    +-------------------+

    | REPEAT('mysql',3) |

    +-------------------+

    | mysqlmysqlmysql   |

    +-------------------+

    (10) 空格函数:SPACE(n)

    SPACE(n) 用于返回 n 个空格

    mysql> SELECT SPACE(20);

    +----------------------+

    | SPACE(20)            |

    +----------------------+

    |                      |

    +----------------------+

    (11) 替换函数:REPLACE(s,s1,s2)

    REPLACE(s,s1,s2) 表示使用字符串 s2 替换字符串 s 中所有的字符串 s1

    mysql> SELECT REPLACE('xxx.mysql.com', 'x', 'w');

    +------------------------------------+

    | REPLACE('xxx.mysql.com', 'x', 'w') |

    +------------------------------------+

    | www.mysql.com        |

    +------------------------------------+

    (12) 比较字符串大小的函数:STRCMP(s1,s2)

    STRCMP(s1,s2) 用于比较字符串 s1 s2 的大小,若所有字符串相同则返回 0 ,若第一个字符串大于第二个字符串则返回 1 ,若第一个字符串小于第二个字符串则返回 -1

    mysql> SELECT STRCMP('txt', 'txt2'), STRCMP('txt', 'txt');

    +-----------------------+----------------------+

    | STRCMP('txt', 'txt2') | STRCMP('txt', 'txt') |

    +-----------------------+----------------------+

    |            -1 |           0 |

    +-----------------------+----------------------+

    (13) 获取子字符串的函数:SUBSTRING(s,n,len) MID(s,n,len)

    SUBSTRING(s,n,len) 用于获取指定位置的子字符串

    mysql> SELECT SUBSTRING('breakfast',5) AS col1,  # 从第5个字符串开始获取

        -> SUBSTRING('breakfast',5,3) AS col2,       # 从第5个字符串开始,获取3

        -> SUBSTRING('breakfast',-5) AS col3,        # (倒向)从第5个字符串开始获取

        -> SUBSTRING('breakfast',-5,3) AS col4;      # (倒向)从第5个字符串开始获取,获取3

    +-------+------+-------+------+

    | col1  | col2 | col3  | col4 |

    +-------+------+-------+------+

    | kfast | kfa  | kfast | kfa |

    +-------+------+-------+------+

    MID(s,n,len) 用于获取指定位置的子字符串

    mysql> SELECT MID('breakfast',5) AS col1,  # 从第5个字符串开始获取

        -> MID('breakfast',5,3) AS col2,       # 从第5个字符串开始,获取3

        -> MID('breakfast',-5) AS col3,        # (倒向)从第5个字符串开始获取

        -> MID('breakfast',-5,3) AS col4;      # (倒向)从第5个字符串开始获取,获取3

    +-------+------+-------+------+

    | col1  | col2 | col3  | col4 |

    +-------+------+-------+------+

    | kfast | kfa  | kfast | kfa |

    +-------+------+-------+------+

    (14) 匹配子字符串开始位置的函数:LOCATE(str1,str) POSITION(str1 IN str) INSTR(str, str1)

    LOCATE(str1,str) 用于返回字符串 str1 在字符串 str 中的开始位置

    mysql> SELECT LOCATE('ball', 'football');

    +----------------------------+

    | LOCATE('ball', 'football') |

    +----------------------------+

    |               5 |

    +----------------------------+

    POSITION(str1 IN str) 用于返回字符串 str1 在字符串 str 中的开始位置

    mysql> SELECT POSITION('ball' IN 'football');

    +--------------------------------+

    | POSITION('ball' IN 'football') |

    +--------------------------------+

    | 5                  |

    +--------------------------------+

    INSTR(str, str1) 用于返回子字符串 str1 在字符串 str 中的开始位置

    mysql> SELECT INSTR('football', 'ball');

    +---------------------------+

    | INSTR('football', 'ball') |

    +---------------------------+

    |              5 |

    +---------------------------+

    (15) 反转字符串的函数:REVERSE(s)

    REVERSE(s) 用于将字符串 s 反转

    mysql> SELECT REVERSE('abcd');

    +-----------------+

    | REVERSE('abcd') |

    +-----------------+

    | dcba      |

    +-----------------+

    (16) 返回指定位置的字符串的函数:ELT(n, s1, s2, s3, .....)

    ELT(n, s1, s2, s3, .....) 用于返回第 n 个字符串,如果 n 超出范围则返回 NULL

    mysql> SELECT ELT(3, 'a', 'b', 'c', 'd'), ELT(5, 'a', 'b', 'c', 'd');

    +----------------------------+----------------------------+

    | ELT(3, 'a', 'b', 'c', 'd') | ELT(5, 'a', 'b', 'c', 'd') |

    +----------------------------+----------------------------+

    | c                 | NULL            |

    +----------------------------+----------------------------+

    (17) 返回指定字符串位置的函数:FIELD(s, s1, s2, .....)

    FIELD(s, s1, s2, .....) 用于返回字符串 s 在列表 s1, s2, .... 中的位置,如果不存在字符串 s 则返回 0 ,如果字符串 s NULL 也返回 0

    mysql> SELECT FIELD('hi', 'hihi', 'hey', 'hi', 'bas');

    +-----------------------------------------+

    | FIELD('hi', 'hihi', 'hey', 'hi', 'bas') |

    +-----------------------------------------+

    |                       3 |

    +-----------------------------------------+

    (18) 返回子字符串位置的函数:FIND_IN_SET(s1, s2)

    FIND_IN_SET(s1, s2) 用于返回字符串 s1 在字符串列表 s2 中的位置

    mysql> SELECT FIND_IN_SET('hi', 'hihi,hey,hi,bas');  # 注意s2是一个列表

    +--------------------------------------+

    | FIND_IN_SET('hi', 'hihi,hey,hi,bas') |

    +--------------------------------------+

    |                      3 |

    +--------------------------------------+

     三、日期和时间函数

    (1) 获取当前日期的函数:CURDATE() CURRENT_DATE()

    CURDATE() 用于获取系统当前日期

    mysql> SELECT CURDATE();

    +------------+

    | CURDATE()  |

    +------------+

    | 2017-05-23 |

    +------------+

    CURRENT_DATE() 用于系统获取当前日期

    mysql> SELECT CURRENT_DATE();

    +----------------+

    | CURRENT_DATE() |

    +----------------+

    | 2017-05-23     |

    +----------------+

    (2) 获取当前时间的函数:CURTIME() CURRENT_TIME()

    CURTIME() 用于获取系统当前时间

    mysql> SELECT CURTIME();

    +-----------+

    | CURTIME() |

    +-----------+

    | 20:25:23  |

    +-----------+

    (3) 获取当前日期和时间的函数:CURRENT_TIMESTAMP() LOCALTIME() NOW() SYSDATE()

    CURRENT_TIMESTAMP() 用于获取系统当前日期和时间

    mysql> SELECT CURRENT_TIMESTAMP();

    +---------------------+

    | CURRENT_TIMESTAMP() |

    +---------------------+

    | 2017-05-23 20:26:48 |

    +---------------------+

    LOCALTIME() 用于获取系统当前日期和时间

    mysql> SELECT LOCALTIME();

    +---------------------+

    | LOCALTIME()         |

    +---------------------+

    | 2017-05-23 20:27:29 |

    +---------------------+

    NOW() 用于获取系统当前日期和时间

    mysql> SELECT NOW();

    +---------------------+

    | NOW()               |

    +---------------------+

    | 2017-05-23 20:28:10 |

    +---------------------+

    SYSDATE() 用于获取系统当前日期和时间

    mysql> SELECT SYSDATE();

    +---------------------+

    | SYSDATE()           |

    +---------------------+

    | 2017-05-23 20:29:02 |

    +---------------------+

    (4) 获取时间戳的函数:UNIX_TIMESTAMP()

    UNIX_TIMESTAMP() 用于获取 UNIX 格式的时间戳

    mysql> SELECT UNIX_TIMESTAMP();

    +------------------+

    | UNIX_TIMESTAMP() |

    +------------------+

    |       1495542689 |

    +------------------+

    (5) 转换时间戳的函数:FROM_UNIXTIME()

    FROM_UNIXTIME() 用于将 UNIX 格式的时间戳转换为普通格式的时间

    mysql> SELECT FROM_UNIXTIME('1495542689');

    +-----------------------------+

    | FROM_UNIXTIME('1495542689') |

    +-----------------------------+

    | 2017-05-23 20:31:29         |

    +-----------------------------+

    (6) 获取 UTC 日期的函数:UTC_DATE()

    UTC_DATE() 用于获取当前 UTC (世界标准时间) 日期值

    mysql> SELECT UTC_DATE();

    +------------+

    | UTC_DATE() |

    +------------+

    | 2017-05-23 |

    +------------+

    (7) 获取 UTC 时间的函数:UTC_TIME()

    UTC_TIME() 用于获取当前 UTC (世界标准时间) 时间值

    mysql> SELECT UTC_TIME();

    +------------+

    | UTC_TIME() |

    +------------+

    | 12:36:29   |

    +------------+

    (8) 获取月份的函数:MONTH(date) MONTHNAME(date)

    MONTH(date) 用于返回 date 对应的月份

    mysql> SELECT MONTH('2017-02-23');

    +---------------------+

    | MONTH('2017-02-23') |

    +---------------------+

    |                 2 |

    +---------------------+

    MONTHNAME(date) 用于返回 date 对应月份的英文全名

    mysql> SELECT MONTHNAME('2017-02-23');

    +-------------------------+

    | MONTHNAME('2017-02-23') |

    +-------------------------+

    | February                |

    +-------------------------+

    (9) 获取星期的函数:DAYNAME(date) DAYOFWEEK(date) WEEKDAY(date) WEEK(date) WEEKOFYEAR(date)

    DAYNAME(date) 用于返回 date 对应的工作日的英文名称

    mysql> SELECT DAYNAME('2017-02-23');

    +-----------------------+

    | DAYNAME('2017-02-23') |

    +-----------------------+

    | Thursday              |

    +-----------------------+

    DAYOFWEEK(date) 用于返回 date 对应的一周中的索引,1 表示周日,2 表示周一,...... 7 表示周六

    mysql> SELECT DAYOFWEEK('2017-02-23');

    +-------------------------+

    | DAYOFWEEK('2017-02-23') |

    +-------------------------+

    |                     5 |

    +-------------------------+

    WEEKDAY(date) 用于返回日期对应的工作日索引,0 表示周一,1 表示周二,...... 6 表示周日

    mysql> SELECT WEEKDAY('2017-05-23');

    +-----------------------+

    | WEEKDAY('2017-05-23') |

    +-----------------------+

    |                   1 |

    +-----------------------+

    WEEK(date) 用于计算 date 是一年中的第几周,一年有 53

    mysql> SELECT WEEK('2017-05-23');

    +--------------------+

    | WEEK('2017-05-23') |

    +--------------------+

    |              21 |

    +--------------------+

    WEEKOFYEAR(date) 用于计算日期 date 是一年中的第几周,一年有 53

    mysql> SELECT WEEKOFYEAR('2017-05-23');

    +--------------------------+

    | WEEKOFYEAR('2017-05-23') |

    +--------------------------+

    |                    21 |

    +--------------------------+

    (10) 获取天数的函数:DAYOFYEAR(date) DAYOFMONTH(date)

    DAYOFYEAR(date) 用于返回 date 是一年中的第几天,一年有 365

    mysql> SELECT DAYOFYEAR('2017-05-23');

    +-------------------------+

    | DAYOFYEAR('2017-05-23') |

    +-------------------------+

    |                  143 |

    +-------------------------+

    DAYOFMONTH(date) 用于计算 date 是一个月中的第几天

    mysql> SELECT DAYOFMONTH('2017-05-23');

    +--------------------------+

    | DAYOFMONTH('2017-05-23') |

    +--------------------------+

    |                     23 |

    +--------------------------+

    (11) 获取年份的函数:YEAR(date)

    YEAR(date) 返回 date 对应的年份

    mysql> SELECT YEAR('11-02-03'), YEAR('98-02-03');

    +------------------+------------------+

    | YEAR('11-02-03') | YEAR('98-02-03') |

    +------------------+------------------+

    | 2011      | 1998       |

    +------------------+------------------+

    (12) 获取季度的函数:QUARTER(date)

    QUARTER(date) 返回 date 对应的一年中的季度值

    mysql> SELECT QUARTER('17-05-23');

    +---------------------+

    | QUARTER('17-05-23') |

    +---------------------+

    |                2 |

    +---------------------+

    (13) 获取分钟的函数:MINUTE(time)

    MINUTE(time) 返回 time 对应的分钟值

    mysql> SELECT MINUTE('17-02-03 10:10:03');

    +-----------------------------+

    | MINUTE('17-02-03 10:10:03') |

    +-----------------------------+

    |                      10 |

    +-----------------------------+

    (14) 获取秒钟的函数:SECOND(time)

    SECOND(time) 返回 time 对应的秒数

    mysql> SELECT SECOND('10:05:03');

    +--------------------+

    | SECOND('10:05:03') |

    +--------------------+

    |               3 |

    +--------------------+

    (15) 获取日期的指定值的函数:EXTRACT(type FROM date)

    EXTRACT(type FROM date) 用于获取指定的日期值

    mysql> SELECT EXTRACT(YEAR FROM '2016-07-02') AS col1,           # typeYEAR时,只返回年值

        -> EXTRACT(YEAR_MONTH FROM '2016-07-02 01:02:03') AS col2,   # typeYEAR_MONTH时,返回年与月

        -> EXTRACT(DAY_MINUTE FROM '2016-07-02 01:02:03') AS col3;   # typeDAY_MINUTE时,返回日、小时、分钟

    +------+--------+-------+

    | col1 | col2   | col3  |

    +------+--------+-------+

    | 2016 | 201607 | 20102 |

    +------+--------+-------+

    (16) 时间和秒钟转换的函数:TIME_TO_SEC(time) SEC_TO_TIME(time)

    TIME_TO_SEC(time) 用于将 time 转换为秒钟,公式为 " 小时*3600 + 分钟*60 + "

    mysql> SELECT TIME_TO_SEC('23:23:00');

    +-------------------------+

    | TIME_TO_SEC('23:23:00') |

    +-------------------------+

    |                84180 |

    +-------------------------+

    SEC_TO_TIME(time) 用于将秒值转换为时间格式

    mysql> SELECT SEC_TO_TIME('84180');

    +----------------------+

    | SEC_TO_TIME('84180') |

    +----------------------+

    | 23:23:00           |

    +----------------------+

    (17) 计算日期和时间的函数:DATE_ADD() ADDDATE() DATE_SUB() SUBDATE() ADDTIME() SUBTIME() DATE_DIFF()

    DATE_ADD() 用于对日期进行加运算,格式为 DATE_ADD(date, INTERVAL expr type) expr type 的关系

    mysql> SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND);   # 对指定的日期增加1

    +----------------------------------------------------+

    | DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND) |

    +----------------------------------------------------+

    | 2011-01-01 00:00:00                             |

    +----------------------------------------------------+

    mysql> SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND);   # 对指定的日期增加11

    +---------------------------------------------------------------+

    | DATE_ADD('2010-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) |

    +---------------------------------------------------------------+

    | 2011-01-01 00:01:00                                      |

    +---------------------------------------------------------------+

    DATE_SUB() 用于对日期进行减运算,格式为 DATE_SUB(date, INTERVAL expr type) expr type 的关系

    mysql> SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY);  # 给指定的日期减去31

    +-----------------------------------------+

    | DATE_SUB('2011-01-02', INTERVAL 31 DAY) |

    +-----------------------------------------+

    | 2010-12-02                          |

    +-----------------------------------------+

    SUBDATE() 用于对日期进行减运算,格式为 SUBDATE(date, INTERVAL expr type) expr type 的关系

    mysql> SELECT SUBDATE('2011-01-02', INTERVAL 31 DAY);    # 对指定的日期减去31

    +----------------------------------------+

    | SUBDATE('2011-01-02', INTERVAL 31 DAY) |

    +----------------------------------------+

    | 2010-12-02                         |

    +----------------------------------------+

    ADDTIME() 用于对日期进行加运算,格式为 ADDTIME(date, expr)

    mysql> SELECT ADDTIME('2000-12-31 23:59:59', '1:1:1');    # 给指定的日期增加111

    +-----------------------------------------+

    | ADDTIME('2000-12-31 23:59:59', '1:1:1') |

    +-----------------------------------------+

    | 2001-01-01 01:01:00                |

    +-----------------------------------------+

    SUBTIME() 用于对日期进行减运算,格式为 SUBTIME(date, expr)

    mysql> SELECT SUBTIME('2000-12-31 23:59:59', '1:1:1');    # 给指定的日期减去111

    +-----------------------------------------+

    | SUBTIME('2000-12-31 23:59:59', '1:1:1') |

    +-----------------------------------------+

    | 2000-12-31 22:58:58                |

    +-----------------------------------------+

    DATE_DIFF() 用于计算两个日期之间的间隔天数

    mysql> SELECT DATEDIFF('2017-12-31', '2010-12-31');

    +--------------------------------------+

    | DATEDIFF('2017-12-31', '2010-12-31') |

    +--------------------------------------+

    |                           2557 |

    +--------------------------------------+

    (18) 将日期和时间格式化的函数:DATE_FORMAT(date, format) TIME_FORMAT(time, format) GET_FORMAT(val_type, format_type)

    DATE_FORMAT(date, format) 用于格式化日期,即根据 format 指定的格式显示 date 值,format 格式

    mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');

    +------------------------------------------------+

    | DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') |

    +------------------------------------------------+

    | Saturday October 1997                        |

    +------------------------------------------------+

    TIME_FORMAT(time, format) 用于格式化时间,即根据 format 指定的格式显示 time 值,format 格式

    mysql> SELECT TIME_FORMAT('16:00:00', '%H %k %I');

    +-------------------------------------+

    | TIME_FORMAT('16:00:00', '%H %k %I') |

    +-------------------------------------+

    | 16 16 04                        |

    +-------------------------------------+

    GET_FORMAT() ,我们指定值类型和格式化类型,然后会显示成格式字符串

    mysql> SELECT DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA'));

    +------------------------------------------------------------+

    | DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA')) |

    +------------------------------------------------------------+

    | 10.05.2000                                             |

    +------------------------------------------------------------+

    四、条件判断函数

    (1) IF()

    IF(expr, v1, v2) 如果表达式 expr TRUE ,则返回值为 v1 ,否则返回 v2

    mysql> SELECT IF(1>2, 2, 3);

    +---------------+

    | IF(1>2, 2, 3) |

    +---------------+

    |         3 |

    +---------------+

    (2) IFNULL()

    IFNULL(v1, v2) ,如果 v1 不为 NULL ,则返回值为 v1 ;如果 v1 NULL ,则返回值为 v2

    mysql> SELECT IFNULL(1,2), IFNULL(NULL,10);

    +-------------+-----------------+

    | IFNULL(1,2) | IFNULL(NULL,10) |

    +-------------+-----------------+

    |       1 |           10 |

    +-------------+-----------------+

    (3) CASE

    语法:CASE  expr  WHEN  v1  THEN  r1  [WHEN  v2  THEN  r2]  [ELSE  rn]  END

    含义:如果 expr 等于某个 vn ,则返回对应位置 THEN 后面的结果,如果与所有值都不相等,则返回 ELSE 后面的 rn

    mysql> SELECT CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;

    +------------------------------------------------------------+

    | CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END |

    +------------------------------------------------------------+

    | two                                                  |

    +------------------------------------------------------------+

    五、系统信息函数

    (1) 获取 MySQL 版本号的函数:VERSION()

    VERSION() 用于获取 MySQL 版本号

    mysql> SELECT VERSION();

    +------------+

    | VERSION()  |

    +------------+

    | 5.7.18-log |

    +------------+

    (2) 查看当前用户的连接数的函数:CONNECTION_ID()

    CONNECTION_ID() 用于查看当前用户的连接数

    mysql> SELECT CONNECTION_ID();

    +-----------------+

    | CONNECTION_ID() |

    +-----------------+

    | 10              |

    +-----------------+

    mysql> SHOW PROCESSLIST;        # 查看当前用户的连接信息

    +----+------+-----------------+------+---------+------+----------+------------------+

    | Id | User | Host            | db   | Command | Time | State    | Info             |

    +----+------+-----------------+------+---------+------+----------+------------------+

    | 10 | root | localhost:52421 | NULL | Query   |    0 | starting | SHOW PROCESSLIST |

    +----+------+-----------------+------+---------+------+----------+------------------+

    (1) Id :用户登录 MySQL 时,系统分配的连接 id

    (2) User :当前连接的用户

    (3) Host :显示这个语句是从哪个 IP 的哪个端口上发出的,可以用来追踪出现问题语句的用户

    (4) db :显示这个进程目前连接的是哪个数据库

    (5) Command :显示当前连接执行的命令,一般取值为休眠(Sleep)、查询(Query)、连接(Connect)

    (6) Time :显示这个状态持续的时间,单位是秒

    (7) State :显示使用当前连接的 SQL 语句的状态

    (8) Info :显示这个 SQL 语句

    (3) 查看当前使用的数据库的函数:DATABASE() SCHEMA()

    DATABASE() 用于查看当前使用的数据库

    mysql> SELECT DATABASE();

    +------------+

    | DATABASE() |

    +------------+

    | test_db    |

    +------------+

    SCHEMA() 用于查看当前使用的数据库

    mysql> SELECT SCHEMA();

    +----------+

    | SCHEMA() |

    +----------+

    | test_db  |

    +----------+

    (4) 查看当前登录的用户名的函数:USER() CURRENT_USER() SYSTEM_USER()

    USER() 返回当前登录的用户及主机名

    mysql> SELECT USER();

    +----------------+

    | USER()         |

    +----------------+

    | root@localhost |

    +----------------+

    CURRENT_USER() 用于返回当前登录的用户及主机名

    mysql> SELECT CURRENT_USER();

    +----------------+

    | CURRENT_USER() |

    +----------------+

    | root@localhost |

    +----------------+

    SYSTEM_USER() 用于返回当前登录的用户及主机名

    mysql> SELECT SYSTEM_USER();

    +----------------+

    | SYSTEM_USER()  |

    +----------------+

    | root@localhost |

    +----------------+

    (5) 查看指定字符串的字符集的函数:CHARSET(str)

    CHARSET(str) 用于查看字符串 str 的字符集

    mysql> SELECT CHARSET('abc');

    +----------------+

    | CHARSET('abc') |

    +----------------+

    | utf8           |

    +----------------+

    (6) 查看指定字符串的排列方式的函数:COLLATION(str)

    COLLATION(str) 用于查看字符串 str 的字符排列方式

    mysql> SELECT COLLATION('abc');

    +------------------+

    | COLLATION('abc') |

    +------------------+

    | utf8_general_ci  |

    +------------------+

    (7) 获取最后一个自动生成的 ID 值得函数:LAST_INSERT_ID()

    LAST_INSERT_ID() 用于获取最后一个自动生成的 ID

    mysql> CREATE TABLE worker    

         (

         id   INT AUTO_INCREMENT PRIMARY KEY,        # 先创建一个表,其id字段带有AUTO_INCREMENT约束

         name VARCHAR(30)

         );

    mysql> INSERT INTO worker VALUES (NULL,'jimy');    # 插入一条数据,这时id没有指定,则自动生成,id1

    mysql> INSERT INTO worker VALUES (NULL,'Tom');     # 插入一条数据,这时id没有指定,则自动生成,id2

    mysql> SELECT * FROM worker;                       # 查看表的信息               

    +----+------+

    | id | name |

    +----+------+

    |  1 | jimy |

    |  2 | Tom  |

    +----+------+

    mysql> SELECT LAST_INSERT_ID();                    # 查看最后一个自动生成的id

    +------------------+

    | LAST_INSERT_ID() |

    +------------------+

    |              2 |

    +------------------+

    mysql> INSERT INTO worker VALUES (NULL,'Kenvin'), (NULL,'Michal'), (NULL,'Nick');

    mysql> SELECT * FROM worker;                       # 如果我们一次性插入多条数据,虽然id到了5

    +----+--------+

    | id | name   |                                    # 但我们用LAST_INSERT_ID()查看时却为3

    +----+--------+

    |  1 | jimy   |                                 # 这是因为LAST_INSERT_ID()只返回插入的第一行数据时产生值

    |  2 | Tom    |                                    

    |  3 | Kenvin |

    |  4 | Michal |

    |  5 | Nick   |

    +----+--------+

    mysql> SELECT LAST_INSERT_ID();                   

    +------------------+

    | LAST_INSERT_ID() |                              

    +------------------+

    |              3 |

    +------------------+

    六、加/解密函数

    (1) 加密函数:PASSWORD(str) MD5(str) ENCODE(str, pswd_str)

    PASSWORD(str) 从明文密码 str 计算并返回加密后的密码字符串,当参数为 NULL 时,返回 NULL

    mysql> SELECT PASSWORD('newpwd');

    +-------------------------------------------+

    | PASSWORD('newpwd')                        |

    +-------------------------------------------+

    | *1FA85AA204CC12B39B20E8F1E839D11B3F9E6AA4 |

    +-------------------------------------------+

    MD5(str) 为字符串 str 算出一个 MD5 128 比特校验和

    mysql> SELECT MD5('newpwd');

    +----------------------------------+

    | MD5('newpwd')                    |

    +----------------------------------+

    | a5e3094ce553e08de5ba237525b106d5 |

    +----------------------------------+

    ENCODE(str, pswd_str) 使用 pswd_str 作为密码,加密 str

    mysql> SELECT ENCODE('secret', 'newpwd');

    +----------------------------+

    | ENCODE('secret', 'newpwd') |

    +----------------------------+

    | ü­EE                   |

    +----------------------------+

    (2) 解密函数:DECODE(crypt_str, pswd_str)

    DECODE(crypt_str, pswd_str) 使用 pswd_str 作为密码,解密加密字符串 crypt_str

    mysql> SELECT DECODE(ENCODE('secret','cry'), 'cry');

    +---------------------------------------+

    | DECODE(ENCODE('secret','cry'), 'cry') |

    +---------------------------------------+

    | secret                       |

    +---------------------------------------+

    七、其他函数

    (1) 格式化函数:FORMAT(x, n)

    FORMAT(x, n) 将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串的形式返回

    mysql> SELECT FORMAT(1.23456, 4), FORMAT(1.2, 4), FORMAT(1.234, 0);

    +--------------------+----------------+------------------+

    | FORMAT(1.23456, 4) | FORMAT(1.2, 4) | FORMAT(1.234, 0) |

    +--------------------+----------------+------------------+

    | 1.2346             | 1.2000         | 1                |

    +--------------------+----------------+------------------+

    (2) 不同进制的数字进行转换的函数:CONV()

    CONV() 用于不同进制数之间的转换

    mysql> SELECT CONV('a',16,2),   # 16进制的a转换为2进制

        -> CONV(15,10,2),           # 10进制的15转换为2进制

        -> CONV(15,10,8),           # 10进制的15转换为8进制

        -> CONV(15,10,16);          # 10进制的15转换为16进制

    +----------------+---------------+---------------+----------------+

    | CONV('a',16,2) | CONV(15,10,2) | CONV(15,10,8) | CONV(15,10,16) |

    +----------------+---------------+---------------+----------------+

    | 1010           | 1111          | 17            | F              |

    +----------------+---------------+---------------+----------------+

    (3) IP 地址与数字互相转换的函数:INET_ATON(expr) INET_NTOA(expr)

    INET_ATON(expr) 用于将网络地址转换为一个代表该地址数值的整数

    mysql> SELECT INET_ATON('192.168.1.1');

    +--------------------------+

    | INET_ATON('192.168.1.1') |

    +--------------------------+

    |           3232235777 |

    +--------------------------+

    (4) 加锁函数和解锁函数:GET_LOCK(str, timeout) RELEASE_LOCAK(str)

    IS_FREE_LOCK(str) IS_USED_LOCK(str)

    GET_LOCK(str, timeout) 使用字符串 str 来得到一个锁,持续时间 timeout

    (1) 若成功得到锁,则返回 1

    (2) 若操作超时,则返回 0

    (3) 若发生错误,则返回 NULL

    mysql> SELECT GET_LOCK('lock1', 10);

    +-----------------------+

    | GET_LOCK('lock1', 10) |

    +-----------------------+

    |                1 |   # 返回结果为1,说明成功得到了一个名称为'lock1'的锁,持续时间为10

    +-----------------------+

    RELEASE_LOCAK(str) 用于解开被 GET_LOCK() 获取的,用字符串 str 所命名的锁

    (1) 若锁被解开,则返回 1

    (2) 若该线程尚未创建锁,则返回 0

    (3) 若命名的锁不存在,则返回 NULL

    (4) 若该锁从未被 GET_LOCK() 的调用获取,或锁已经被提前解开,则该锁不存在

    mysql> SELECT RELEASE_LOCK('lock1');

    +-----------------------+

    | RELEASE_LOCK('lock1') |

    +-----------------------+

    |                  1 |    # 返回值为1说明解锁成功

    +-----------------------+

    IS_FREE_LOCK(str) 检查名为 str 的锁是否可以使用

    (1) 若锁可以使用,则返回 1

    (2) 若锁正在被使用,则返回 0

    (3) 若出现错误,则返回 NULL

    mysql> SELECT IS_FREE_LOCK('lock1');

    +-----------------------+

    | IS_FREE_LOCK('lock1') |

    +-----------------------+

    |                 1 |    # 返回值为1说明锁可以使用

    +-----------------------+

    IS_USED_LOCK(str) 用于检查名为 str 的锁是否正在被使用,若被封锁,则返回使用该锁的客户端的连接标识符,否则返回 NULL

    mysql> SELECT IS_USED_LOCK('lock1');

    +-----------------------+

    | IS_USED_LOCK('lock1') |

    +-----------------------+

    |                10 |    # 返回结果为当前连接ID,表示名称为'lock1'的锁正在被使用

    +-----------------------+

    (5) 重复执行指定操作的函数:RENCHMARK(count, expr)

    RENCHMARK(count, expr) 用于重复 count 次执行表达式 expr

    (1) 可以用于计算 MySQL 处理表达式的速度

    (2) 可以在 MySQL 客户端内部报告语句执行的时间

    mysql> SELECT PASSWORD('newpwd');

    +-------------------------------------------+

    | PASSWORD('newpwd')                        |

    +-------------------------------------------+

    | *1FA85AA204CC12B39B20E8F1E839D11B3F9E6AA4 |

    +-------------------------------------------+

    1 row in set, 1 warning (0.00 sec)     # 执行1次加密操作花费了0.00

    mysql> SELECT BENCHMARK( 500000, PASSWORD('newpwd') );

    +-----------------------------------------+

    | BENCHMARK( 500000, PASSWORD('newpwd') ) |

    +-----------------------------------------+

    |                                       0 |

    +-----------------------------------------+

    1 row in set, 1 warning (0.16 sec)     # 执行500000次加密操作花费了0.16

    (6) 改变字符集的函数:CONVERT(... USING ...)

    CONVERT(... USING ...) 用于改变字符串的默认字符集

    mysql> SELECT CHARSET('abc');    # 默认是utf8字符集

    +----------------+

    | CHARSET('abc') |

    +----------------+

    | utf8           |

    +----------------+

    mysql> SELECT CHARSET(CONVERT('abc' USING latin1));    # 转换成latin1字符集

    +--------------------------------------+

    | CHARSET(CONVERT('abc' USING latin1)) |

    +--------------------------------------+

    | latin1                               |

    +--------------------------------------+

    (7) 改变数据类型的函数:CAST(x, AS type) CONVERT(x, type)

    CAST(x, AS type) 用于将一个数据类型的值转换为另一个数据类型的值

    复制代码

    mysql> SELECT CAST(100 AS CHAR(2));   # 将整数类型100转换为带有两个显示宽度的字符串类型,结果为'10'

    +----------------------+

    | CAST(100 AS CHAR(2)) |

    +----------------------+

    | 10                   |

    +----------------------+

    CONVERT(x, type) 用于将一个数据类型的值转换为另一个数据类型的值

    可转换的type 有  : BINARYCHAR()、DATETIMEDATETIMEDECRMALSIGNED

    mysql> SELECT CONVERT(100, CHAR(2));    # 将整数类型的100转换为带有两个显示宽度的字符串类型,结果为'10'

    +-----------------------+

    | CONVERT(100, CHAR(2)) |

    +-----------------------+

    | 10                    |

    +-----------------------+

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/bingpo-blade/p/9035377.html
Copyright © 2011-2022 走看看