MySQLの基本的な研究ノート-一般的に使用される関数

共通機能

1.文字列関数

関数 説明
CONCAT(S1、S2、…、Sn) 接続パラメータ文字列は文字列です
INSERT(文字列、x、y、文字列) x番目の位置から始まる文字列strとy文字の長い部分文字列をinstrに置き換えます
LOWER(文字列) 小文字
UPPER(文字列) 資本
LEFT(文字列、x) 文字列の左端のx文字を返します
RIGHT(文字列、x) 文字列の右端のx文字を返します
LPAD(文字列、n、パッド) strの左端を、長さがn文字になるまで文字列パッドで埋めます。
RPAD(文字列、n、パッド) strの右端を、長さがn文字になるまで文字列パッドで埋めます。
Ltrim(文字列) 文字列strの左側のスペースを削除します
RTRIM(文字列) 文字列strの右側のスペースを削除します
REPEAT(文字列、x) strをx回繰り返した結果を返します
REPLACE(文字列、a、b) 文字列str内のすべての文字列aを文字列bに置き換えます
STRCMP(s1、s2) 文字列を比較する
TRIM(文字列) 文字列の最後と行の先頭のスペースを削除します
SUBSTRING(文字列、x、y) 位置str xからy文字の部分文字列を返します

2.数値関数

関数 説明
ABS(x) 絶対値
CEIL(X) xより大きい最小の整数を返します
フロア(x) xより小さい最大の整数を返します
MOD(x、y) x / yの係数を返します
RAND() 0から1までの乱数を返します
ROUND(x、y) xの小数点以下の桁数を丸めた値を返します
TRUNCATE(x、y) 数値xの結果を小数点以下y桁に切り捨てて返します(四捨五入されません)。
mysql> select round(1.1),round(1.1,2),round(1,2),round(1.1,3);
+------------+--------------+------------+--------------+
| round(1.1) | round(1.1,2) | round(1,2) | round(1.1,3) |
+------------+--------------+------------+--------------+
|          1 |         1.10 |          1 |        1.100 |
+------------+--------------+------------+--------------+
1 row in set (0.00 sec)

mysql> select round(1.235,2),truncate(1.235,2);
+----------------+-------------------+
| round(1.235,2) | truncate(1.235,2) |
+----------------+-------------------+
|           1.24 |              1.23 |
+----------------+-------------------+
1 row in set (0.00 sec)

3.日付と時刻の関数

関数 説明
CURDATE() 現在の日付を返す
呪い() 現在の時刻を返す
今() 現在の日付と時刻を返します
UNIX_TIMESTAMP(日付) 日付日付のUNIXタイムスタンプを返します
FROM_UNIXTIME UNIXタイムスタンプの日付値を返します
WEEK(日付) その年の最初の数週間として日付を返す
YEAR(日付) 日付の年を返します
HOUR(日付) 返回 time 的小时值
MINUTE(date) 返回 time 的分钟值
MONTHNAME(date) 返回 date 的月份名
DATE_FORMAT(date,fmt) 返回按字符串 fmt 格式化日期 date 值
DATE_ADD(date,INTERVAL,expr type) 返回上一个日期或时间值加上一个时间间隔的时间值
DATEDIFF(expr,expr2) 返回起始时间 expr 和结束时间 expr2 之间的天数
  • DATE_FORMAT(date,fmt) 函数

    按照 fmt 格式化日期 date 的值,可用的格式符如下:

    格式符 说明
    %S 或 %s 两位数字形式的秒
    %i 两位数字形式的分
    %H 两位数字形式的小时,24 小时
    %h 和 %I(大写 i) 两位数字形式的小时,12 小时
    %k 数字形式的小时,24 小时
    %l(小写 l) 数字形式的小时,12 小时
    %T 24 小时的时间形式
    %r 12 小时的时间形式
    %p AM 或 PM
    %W 一周中每一天的名称
    %a 一周中每一天名称的缩写
    %d 两位数字表示月中的天数
    %e 数字形式表示月中的天数
    %D 英文后缀表示月中的天数
    %w 以数字形式表示周中的天数
    %j 3 位数字表示年中的天数
    %U 周,其中 Sunday 为周中第一天
    %u 周,其中 Monday 为周中第一天
    %M 月名
    %b 缩写的月名
    %m 两位数字表示的月份
    %c 数字表示的月份
    %Y 4 位数字表示的年份
    %y 两位数字表示的年份
    %% 直接值 “%”
    mysql> select now(),DATE_FORMAT(now(),'%M,%D,%Y'),DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s');
    +---------------------+-------------------------------+----------------------------------------+
    | now()               | DATE_FORMAT(now(),'%M,%D,%Y') | DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s') |
    +---------------------+-------------------------------+----------------------------------------+
    | 2020-08-12 16:41:35 | August,12th,2020              | August,12th,2020,16,41,35              |
    +---------------------+-------------------------------+----------------------------------------+
    1 row in set (0.00 sec)
    
  • DATE_ADD(date,INTERVAL,expr type) 函数

    其中 INTERVAL 是间隔类型关键字,expr 是一个表达式,这个表达式对应后面的类型,type 是间隔类型,MySQL 提供了 13 种间隔类型:

    表达式类型 描述 格式
    HOUR 小时 hh
    MINUTE mm
    SECOND ss
    YEAR YY
    MONTH MM
    DAY DD
    YEAR_MONTH 年和月 YY-MM
    DAY_HOUR 日和小时 DD hh
    DAY_MINUTE 日和分钟 DD hh:mm
    DAY_SECOND 日和分钟 DD hh:mm:ss
    HOUR_MINUTE 小时和分 hh:mm
    HOUR_SECOND 小时和秒 hh:mm:ss
    MINUTE_SECOND 分和秒 mm:ss

    第一列返回当前日期,第二列返回距离当前日期 31 天后的日期,第三列返回距离当前日期一年两个月后的日期:

    mysql> select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;
    +---------------------+---------------------+------------------------+
    | current             | after31days         | after_oneyear_twomonth |
    +---------------------+---------------------+------------------------+
    | 2020-08-12 16:52:32 | 2020-09-12 16:52:32 | 2021-10-12 16:52:32    |
    +---------------------+---------------------+------------------------+
    1 row in set (0.00 sec)
    

    同样可以使用负数,返回之前的时间:

    mysql> select now() current,date_add(now(),INTERVAL -31 day) after31days,date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth;
    +---------------------+---------------------+------------------------+
    | current             | after31days         | after_oneyear_twomonth |
    +---------------------+---------------------+------------------------+
    | 2020-08-12 16:53:38 | 2020-07-12 16:53:38 | 2019-06-12 16:53:38    |
    +---------------------+---------------------+------------------------+
    1 row in set (0.00 sec)
    
  • DATEDIFF(expr,expr2) 函数

    计算两个日期之间相差的天数:

    mysql> select DATEDIFF('2008-08-08',now());
    +------------------------------+
    | DATEDIFF('2008-08-08',now()) |
    +------------------------------+
    |                        -4387 |
    +------------------------------+
    1 row in set (0.00 sec)
    

4、流程函数

函数 说明
IF(value,t f) 如果 value 为真,返回 t;否则返回 f
IFNULL(value1,value2) 如果 value1 不为空,返回 value1,否则返回 value2
CASE WHEN [value1] THEN[result1]…ELSE [default]END 如果 value1 是真,返回 result1,否则返回 default
CASE [expr] WHEN [value1] THEN[result1]… ELSE [default] END 如果 expr 等于 value1,返回 result1,否则返回 default

5、其他常用函数

函数 说明
DATABASE() 返回当前数据库名
VERSION() 返回当前数据库版本
USER() 返回当前登陆者名字
INET_ATON(IP) 返回 IP 地址的数字表示
INET_NTOA(num) 返回数字代表的 IP 地址
PASSWORD(str) 返回字符串 str 的加密密码
MD5() 返回字符串 str 的 MD5 值

おすすめ

転載: blog.csdn.net/qq_36879493/article/details/108011009