• 常用sql函数


    A

    AVG 函数

    作用:
    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

    语法:
    SELECT AVG(column_name) FROM table_name;

    ABS函数

    作用:
    返回x的绝对值。

    语法:
    SELECT abs(column_name) FROM table_name;

    例:
    Select abs(10),abs(-10);
    *

    ACOS函数

    作用:
    返回输入n的反余弦,输入n必须在-1到1的范围内。该函数将返回一个在0到pi范围内的值,以弧度表示。

    语法:
    SELECT ACOS(column_name) FROM name;

    例:
    SELECT ACOS(0.5) FROM name;s

    ADDDATE函数

    作用:
    MYSQL ADDDATE()函数用于将指定的时间间隔添加到日期值。

    语法:
    ADDDATE(date,INTERVAL expr unit);
    参数:
    Date:
    表示日期的值,可以是 String、DATE(YEAR、MONTH 和 DAY)、DATETIME(HOURS、MINUTES 或 SECONDS)或 TIMESTAMP 类型。
    Unit:
    unit是 expr 值表示的区间类型,可以是 DAY、WEEK、MONTH、QUARTER、YEAR、HOUR、MINUTE、SECOND、MICROSECOND。

    例:
    SELECT DATE_ADD(‘1998-01-02’, INTERVAL 31 DAY);

    ADDTIME函数

    作用:
    ADDTIME()函数用于将指定的时间间隔添加到给定的日期和时间。添加时间间隔后,它将返回日期或DateTime。

    语法:
    ADDTIME(expr1, expr2)
    参数:
    expr1:给定的日期时间或我们要修改的时间。
    expr2:我们要添加到给定日期时间的时间间隔。它既可以是正面的,也可以是负面的。
    返回值:在添加给定的时间间隔后,它将返回日期或DateTime。

    例:
    1.SELECT ADDTIME(“10:54:21”, “00:10:00”);增加10分钟。
    2.SELECT ADDTIME(“10:54:21”, “1”);增加1秒(-60<1<60)

    ANY和ALL 函数

    作用:
    any 是任意一个
    all 是所有
    any表示有任何一个满足就返回true,all表示全部都满足才返回true 。

    –ALL 父查询中的结果集大于子查询中每一个结果集中的值,则为真。
    SELECT * FROM T2 WHERE N>ALL (SELECT N FROM T1);

    –ANY,SOME 父查询中的结果集大于子查询中任意一个结果集中的值,则为真
    SELECT * FROM T2 WHERE N>ANY(SELECT N FROM T1);
    SELECT * FROM T2 WHERE N>SOME(SELECT N FROM T1);

    –ANY 与子查询IN相同
    SELECT * FROM T2 WHERE N=ANY (SELECT N FROM T1);
    SELECT * FROM T2 WHERE N IN (SELECT N FROM T1)

    – ANY 与NOT IN
    – ANY
    – OR
    父查询中的结果集不等于子查询中的a或者b或者c,则为真
    SELECT * FROM T2 WHERE N <>ANY(SELECT * FROM T1)

    –NOT IN
    –AND
    父查询中的结果集不等于子查询中任意一个结果集中的值,则为真
    SELECT * FROM T2 WHERE N NOT IN(SELECT * FROM T1)

    ASCII函数

    作用:
    返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。

    例:
    https://blog.51cto.com/u_15077535/4798874?abTest=51cto

    ASIN函数

    ASIN()函数返回X的反正弦,X的值必须在-1至1范围内,返回NULL。

    ATAN函数

    作用:
    返回 x 的反正切值,正切为 x 的值。

    例:
    select atan(num);

    atan2() 是 MySQL 的数学函数。此函数用于获取给定数 n 和 m 的反正切。返回给定数字 n 和 m 的反正切。

    B

    BETWEEN AND函数

    作用:
    BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围。

    例:
    1.WHERE column BETWEEN value1 AND value2;
    2.WHERE column NOT BETWEEN value1 AND value2;
    通常 value1 应该小于 value2。当 BETWEEN 前面加上 NOT 运算符时,表示与 BETWEEN 相反的意思,即选取这个范围之外的值。

    BIN函数

    作用:
    将一个十进制数转换为二进制数。

    BIN()函数等价于CONV()函数,其格式为CONV(number,10,2)

    BIN()函数语法 :BIN( NUM )

    BIT_COUNT函数

    例:
    1.SELECT BIT_COUNT(b’0000’):0
    2.BIT_COUNT(b’00100’):1
    3.BIT_COUNT(b’01010101’):4

    BIT_LENGTH函数

    作用:
    用于以位为单位查找给定字符串的长度。输入字符串可以是字符串或数字字符串。

    语法:
    BIT_LENGTH(str):
    参数:
    str:一个字符串,其位数要计算。
    返回:它以位为单位返回给定字符串的长度。

    C

    CASE 函数

    作用:
    是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。

    语法:
    case 测试表达式
    when 简单表达式1 then 结果表达式1
    when 简单表达式2 then 结果表达式2…
    when 简单表达式3 then 结果表达式n
    [else 结果表达式n+1]

    例:
    select 班号,
    count(case when 性别=‘男’ then ‘男’ end)男生数
    count(case when 性别=‘女’ then’女’ end)女生数
    from 学生表 group by 班号;

    CHAR 函数

    作用:
    将每个参数N解释为整数,并返回由这些整数的代码值所给定的字符组成的字符串。 跳过NULL值。

    语法:
    CHAR(N,… [USING charset_name]);

    例:
    SELECT CHAR(77,121,83,81,‘76’); MySQL

    CHAR_LENGTH 函数

    作用:
    返回字符串的长度,以字符为单位。 多字节字符算作单个字符。
    这意味着对于包含五个两个字节的字符串,LENGTH()返回10,而CHAR_LENGTH()返回5。

    例:
    SELECT CHAR_LENGTH(“text”);4
    CHARACTER_LENGTH函数
    CHAR_LENGTH()的同义词。

    COMPRESS函数

    作用:
    压缩字符串:COMPRESS()函数返回的值是二进制字符串。将非空字符串存储为未压缩字符串的four-byte长度,然后是压缩字符串。如果字符串以空格结尾,则将“.”字符添加到字符串。另外,应注意,空字符串存储为空字符串。

    语法:
    COMPRESS(string_to_compress);string_to_compress –用于指定要压缩的纯文本字符串。

    CONCAT函数

    作用:
    把传入的参数连接成一个字符串

    语法:
    concat(s1,s2,…,sn)

    例:
    1.Select concat(‘abc’,’def’);
    2.Select concat(name,’ age is ‘,age) from users;

    CONCAT_WS函数

    作用:
    用分隔符连接字符串,是CONCAT()的一种特殊形式。

    注:
    第一个参数是其余参数的分隔符。 分
    隔符被添加到要连接的字符串之间。
    分隔符可以是字符串,其余参数也可以。 如果分隔符为NULL,则结果为NULL。

    例:
    SELECT CONCAT_WS(‘,’,‘First name’,‘Last Name’ );First name, Last Name

    CONV函数

    作用:
    目的是在基数之间进行转换。该函数返回值N从from_base到to_base转换的字符串。最小基数值是2,最大值为36。

    语法:
    CONV(N,from_base,to_base)

    如果任一参数为NULL,则该函数返回NULL。

    例:
    SELECT CONV(5,16,2);101

    COS函数

    作用:
    该函数返回X,X值是以弧度给出的余弦值。

    例:
    SELECT COS(90);-0.44807361612917

    COT函数

    作用:
    cot()是MySQL的Math函数。此函数用于获取给定数字的余切。

    例:
    select cot(num);

    COUNT 函数

    作用:
    COUNT() 是一个聚合函数,返回指定匹配条件的行数。常用来统计表中数据,全部数据,不为NULL数据,或者去重数据。

    语法:
    COUNT(1):统计不为NULL 的记录。
    COUNT(*):统计所有的记录(包括NULL)。
    COUNT(字段):统计该"字段"不为NULL 的记录。
    1.如果这个字段是定义为not null的话,一行行地从记录里面读出这个字段,判断不能为null,按行累加。
    2.如果这个字段定义允许为null的话,判断到有可能是null,还要把值取出来在判断一下,不是null才累加。

    例:
    COUNT(DISTINCT 字段):统计该"字段"去重且不为NULL 的记录。

    CURDATE函数

    作用:
    返回当前日期,而NOW()函数返回当前时间的日期和时间部分。等同于SELECT DATE(NOW());

    例:
    SELECT CURDATE();yyyy-mm-dd

    CURRENT_DATE 函数

    CURRENT_DATE和CURRENT_DATE()是CURDATE()的同义词。

    CURRENT_TIME函数

    作用:
    只显示当前时间的时分秒

    例:
    select CURRENT_TIME();14:07:06

    注:
    以下几种写法的返回值是一样的:
    curtime()
    current_time()
    current_time

    D

    DATEDIFF函数

    作用:DATEDIFF(date1,date2)
    返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算)

    DATEDIFF函数与TIMESTAMPDIFF函数的区别
    1.DATEDIFF函数仅用于返回两个日期的天数,TIMESTAMPDIFF函数用于返回计算两个日期指定单位的时间差(指定单位可以是年,季度,月,星期,天数,小时,分钟,秒等等)。

    2.对日期差值的计算方式相反:
    DATEDIFF函数的语法格式: DATEDIFF(start,end)
    DATEDIFF函数返回start - end的计算结果
    TIMESTAMPDIFF函数的语法格式: TIMESTAMPDIFF(DAY,start,end)
    TIMESTAMPDIFF函数返回end - start的计算结果
    例:
    SELECT DATEDIFF(‘2022-04-28’, ‘2022-04-30’);
    SELECT TIMESTAMPDIFF(DAY,‘2022-04-28’, ‘2022-04-30’);

    3.如果时间是YYYY-MM-DD HH:MM:SS格式,在计算天数差时,TIMESTAMPDIFF使用的是24小时制,即使是23:59:59,也不算做是一天,而DATEDIFF则是直接截取日期的部分相减。那么此时使用两个函数计算出来的天数是不一样的。
    例:
    SELECT DATEDIFF(‘2022-04-30 00:00:00’,‘2022-04-28 23:59:59’);
    SELECT TIMESTAMPDIFF(DAY,‘2022-04-28 23:59:59’, ‘2022-04-30 00:00:00’);

    DATE_ADD函数

    作用:
    按照指定的单位和幅度修改date的值

    语法:
    DATE_ADD(date,INTERVAL expr unit)
    参数:
    expr是一个表达式,指定要添加或从开始日期减去的间隔值。
    expr是一个字符串;它可能会开始一个“ - ”的负区间值。
    unit是一个关键字,指示该单元中的表达应被解释。INTERVAL关键字指定unit不区分大小写。
    返回值:
    返回修改后的结果,datetime类型。若任一输入参数为NULL,返回NULL。

    DATE_FORMAT 函数

    作用:
    根据格式字符串格式化日期值。可以在格式字符串中使用以下说明符。
    格式说明符之前必须有个“%”字符。
    符号 意义
    %a 工作日的缩写名称(Sun…Sat)
    %b 月份缩写名称(Jan…Dec)
    %c 月份,数字(0…12)
    %D 带英语后缀的月份中的一天(0th, 1st, 2nd, 3rd, .)
    %d 每月的某天,数字(00…31)
    %e 每月的某天,数字(0…31)
    %f 微秒(000000…999999)
    %H 小时(00…23)
    %h 小时(01…12)
    %I 小时(01…12)
    %i 分钟,数字(00…59)
    %j 一年中的哪一天(001…366)
    %k 小时(0…23)
    %l 小时(1…12)
    %M 月名称(January…December)
    %m 月份,数字(00…12)
    %p 上午或下午
    %r 时间(12小时)(hh:mm:ss,然后是AM或PM)
    %S 秒(00…59)
    %s 秒(00…59)
    %T 时间24小时(hh:mm:ss)
    %U 周(00…53),其中星期日是一周的第一天
    %u 周(00…53),其中星期一是一周的第一天
    %V 周(01…53),其中周日是一周的第一天;与%X一起使用
    %v 周(01…53),其中星期一是一周的第一天;与%x一起使用
    %W 工作日名称(Sunday…Saturday)
    %w 星期几(0 = Sunday…6 = Saturday)
    %X 星期的年份,其中星期日是一周的第一天,数字,四位数;与%V一起使用
    %x 一周的年份,其中星期一是一周的第一天,数字,四位数;与%v一起使用
    %Y 年,数字,四位数
    %y 年,数字(两位数字)
    % 字面值。%。字符
    %x x,对于任何x。上面没有列出

    例:
    DATE_FORMAT(date,INTERVAL expr unit)
    SELECT DATE_FORMAT(‘1997-10-04 22:23:00’, ‘%W %M %Y’);Saturday October 1997
    DATE_SUB 函数
    语法:
    DATE_SUB(date,INTERVAL expr unit)
    参数:
    date是指定开始日期的DATETIME或DATE值。
    expr是一个表达式,指定要从开始日期开始减少的间隔值。
    expr是一个字符串; 它可以以“-”开头表示负间隔。
    unit是一个关键字,指示应解释表达式的单位。
    INTERVAL关键字和单位说明符不区分大小写。下表显示了每个单位值的expr参数的预期形式;
    单位值 预期的expr格式
    MICROSECOND MICROSECONDS
    SECOND SECONDS
    MINUTE MINUTES
    HOUR HOURS
    DAY DAYS
    WEEK WEEKS
    MONTH MONTHS
    QUARTER QUARTERS
    YEAR YEARS
    SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’
    MINUTE_MICROSECOND ‘MINUTES.MICROSECONDS’
    MINUTE_SECOND ‘MINUTES:SECONDS’
    HOUR_MICROSECOND ‘HOURS.MICROSECONDS’
    HOUR_SECOND ‘HOURS:MINUTES:SECONDS’
    HOUR_MINUTE ‘HOURS:MINUTES’
    DAY_MICROSECOND ‘DAYS.MICROSECONDS’
    DAY_SECOND ‘DAYS HOURS:MINUTES:SECONDS’
    DAY_MINUTE ‘DAYS HOURS:MINUTES’
    DAY_HOUR ‘DAYS HOURS’
    YEAR_MONTH ‘YEARS-MONTHS’

    例:
    SELECT DATE_SUB(‘1997-12-31 23:59:59’, INTERVAL ‘1:1’ MINUTE_SECOND);1998-01-01 00:01:00

    DAYNAME 函数

    作用:DAYNAME(date)
    返回日期的工作日名称。

    例:
    SELECT DAYNAME(‘1998-02-05’);Thursday

    DAYOFMONTH 函数

    作用:DAYOFMONTH(date)
    返回日期中月份的日期,范围为0到31。

    例:
    SELECT DAYOFMONTH(‘1998-02-03’);3

    DAYOFWEEK 函数

    作用:DAYOFWEEK(date)
    返回日期的星期几索引(1 = 星期日,2 =星期一,…,7 =星期六)。 这些索引值对应于ODBC标准。

    例:
    SELECT DAYOFWEEK(‘1998-02-03’);3

    DAYOFYEAR 函数

    作用:DAYOFYEAR(date)
    返回日期中的某一天,范围为1到366。

    例:
    SELECT DAYOFYEAR(‘1998-02-03’);34

    DEGREES函数

    作用:DEGREES()
    用于将弧度值转换为度数。将弧度转换为度的公式为:π radian = 180 degrees

    例:
    SELECT DEGREES(3.141592653589793);180
    E

    ELT函数

    作用:
    它在指定的索引处返回一个字符串。如果指定的索引N处没有字符串,则返回NULL。

    语法:
    ELT(N, string1, string2, string3, string4, …)
    参数:
    N:它是一个整数,是要检索的字符串的索引。
    字符串1,字符串2,字符串3:我们要从中检索的字符串列表。

    例:
    Select ELT(8, ‘Learning’, ‘SQL’, ‘at’, ‘geeksforgeeks’, ‘is’, ‘fun’) ;NULL
    Select ELT(1, ‘Learning’, ‘SQL’, ‘at’, ‘geeksforgeeks’, ‘is’, ‘fun’) ;Learning

    ENCRYPT()函数

    作用:
    MySQL ENCRYPT函数用于使用UNIX crypt()对字符串进行加密。

    语法:
    ENCRYPT( string [, salt ] )
    参数:
    string要使用UNIX crypt()进行加密的纯文本字符串。

    salt盐值。 可选的。加密过程中使用的至少2个字符长的字符串。如果未提供盐,则ENCRYPT函数将使用随机值。

    说明:
    1.如果salt的长度小于2个字符,则ENCRYPT函数将返回NULL。
    2.如果字符串为NULL ,则ENCRYPT函数将返回NULL。
    3.如果您的系统上没有UNIX crypt(),则ENCRYPT函数将返回NULL。 (所以WINDOWS版本没法进行加密)

    例:
    1.mysql> SELECT ENCRYPT(‘onitroad’, ‘1’);
    Result: NULL
    2.mysql> SELECT ENCRYPT(NULL);
    Result: NULL
    3.mysql> SELECT ENCRYPT(‘abc’);
    Result: ‘HodO.ryHDWKR2’
    4.mysql> SELECT ENCRYPT(‘onitroad’, ‘123’);
    Result: ‘120RNc3daWyrU’

    EXPORT_SET()函数

    作用:
    此函数有助于返回一个字符串,该字符串将显示位数。该函数需要5个自变量才能起作用。该函数将第一个参数(即整数)转换为二进制数字,如果二进制数字为1,则返回“on”,如果二进制数字为0,则返回“off”。

    语法:
    EXPORT_SET(bits, on, off, separator, number of bits)
    参数:
    bits -
    结果将被格式化的整数。
    on -
    如果二进制数字为1,则它将返回。
    off -
    如果二进制数字为0,则它​​将返回。
    separator -
    分隔符,将放置在返回值之间。
    number of bits
    结果将要到达的位数

    例:
    1.SELECT EXPORT_SET(10, ‘On’, ‘Off’, ‘:’, 5)
    Off🔛off🔛off
    2.SELECT EXPORT_SET(5,‘Y’,‘N’,‘,’,4);Y,N,Y,N

    链接:
    https://vimsky.com/examples/usage/export_set-function-in-mysql.html

    F

    FIELD 函数

    作用:FIELD(str,str1,str2,str3,…)
    返回str1,str2,str3,…列表中str的索引(从1开始的位置)。 如果找不到str,则返回0。 排序。

    FIELD 函数结合 ORDER BY 可以帮助我们将查询结果集按照参数列表顺序返回;
    FIELD 函数结合 ORDER BY 的方式可以帮助我们在数据库层面完成排序,简化了业务代码逻辑;
    FIELD 函数结合 ORDER BY 可能带来 SQL 兼容性以及性能方面的问题;

    注:
    在确认项目数据库不大可能为 MySQL 之外的数据库的前提下,查询数据量少或者需要保持业务代码简洁的场景下,我建议可以采用 FIELD 函数排序;而在数据量庞大的情况下,或者不大可能出现大量 N+1 查询的情况下,我建议可以采用先在数据库中查询数据集(只查询 IN 条件,不排序)再到内存中通过业务代码排序(比如 Ruby 的 Array#sort_by)的方式。

    find_in_set函数

    作用:
    查询字段(strlist) 中是否包含(str)的结果,返回结果为 null或记录 。

    语法:
    FIND_IN_SET(str,strlist)
    参数:
    str 要查询的字符串
    strlist 需查询的字段,参数以”,”分隔,形式如 (1,2,6,8,10,22)

    例:
    从category这张表中查询id为1,3,5,7的分类信息:SELECT * FROM category WHERE FIND_IN_SET(id,‘1,3,5,7’);

    FLOOR函数

    作用:
    找出一个数的最大整数。取整。

    例:
    Select floor(11.2);11。

    FORMAT函数

    语法:
    FORMAT(X,D);

    作用:
    函数用于将数字X格式化为以下格式:###,###,###。##截短至D小数位,返回一个值作为字符串。保留几位小数。

    参数:
    N是要格式化的数字。
    D是要舍入的小数位数。

    例:
    SELECT FORMAT(555454.12365, 2);555454.12

    FOUND_ROWS函数

    作用:
    ELECT语句中经常可能用LIMIT限制返回行数。有时候可能想要知道如果没有LIMIT会返回多少行,但又不想再执行一次相同语句。那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了。

    例如:
    需要取出一张表的前10行,同时又需要取出符合条件的总数。这在某些翻页操作中很常见:
    mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
    mysql> SELECT FOUND_ROWS()
    表示的是:
    上一查询之后,你只需要用FOUND_ROWS()就能获得查询总数,这个数目是抛掉了LIMIT之后的结果数。

    注:
    第一个sql里面的SQL_CALC_FOUND_ROWS不可省略,它表示需要取得结果数,也是后面使用FOUND_ROWS()函数的铺垫。
    第二个SELECT将返回第一条SELECT如果没有LIMIT时返回的行数,
    如果在前一条语句中没有使用SQL_CALC_FOUND_ROWS选项,FOUND_ROWS()将返回前一条语句实际返回的行数。
    FOUND_ROWS()得到的数字是临时的,执行下一条语句就会失效。如果想要这个数字,就要将它保存下来。
    如果使用 SELECT SQL_CALC_FOUND_ROWS,MySQL必须计算所有结果集的行数。比再执行一次不使用LIMIT的查询要快多。

    Url:https://www.bbsmax.com/A/QW5YZerKdm/

    FROM_BASE64函数

    作用:
    用来解码base64编码过得字符串。将给定的字符串编码为二进制格式。

    例:
    select from_base64(str) ;

    FROM_DAYS函数

    作用:
    从数字日期值返回一个日期。

    注意:
    此函数与TO_DAYS()函数相反 。
    FROM_DAYS()函数仅与公历中的日期一起使用。

    例:
    1.SELECT FROM_DAYS(738776);2022-09-13
    2.SELECT TO_DAYS(“2022-09-13”);738776
    3.SELECT TO_DAYS(“2022-9-13”);738776

    FROM_UNIXTIME函数

    作用:
    把时间戳数据转换为时间数据,默认转换为datetime类型;UNIX_TIMESTAMP()是把时间数据转换为时间戳,如时间数据是‘YYYY-MM-DD’格式,转换的时间戳是当天00:00:00的。

    例:
    FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())) 返回的值是‘YYYY-MM-DD 00:00:00’
    select unix_timestamp(“2022-09-13 16:57:00”);1663059420
    select from_unixtime(1663059420,‘%Y-%m-%d %H:%i:%s’);2022-09-13 16:57:00
    参数说明:
    %M 月名字(January~December)
    %W 星期名字(Sunday~Saturday)
    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 数字, 4 位
    %y 年, 数字, 2 位
    %a 缩写的星期名字(Sun~Sat)
    %d 月份中的天数, 数字(00~31)
    %e 月份中的天数, 数字(0~31)
    %m 月, 数字(01~12)
    %c 月, 数字(1~12)
    %b 缩写的月份名字(Jan~Dec)
    %j 一年中的天数(001~366)
    %H 小时(00~23)
    %k 小时(0~23)
    %h 小时(01~12)
    %I 小时(01~12)
    %l 小时(1~12)
    %i 分钟, 数字(00~59)
    %r 时间,12 小时(hh:mm:ss [AP]M)
    %T 时间,24 小时(hh:mm:ss)
    %S 秒(00~59)
    %s 秒(00~59)
    %p AM或PM
    %w 一个星期中的天数(0=Sunday ~6=Saturday )
    %U 星期(0~52), 这里星期天是星期的第一天
    %u 星期(0~52), 这里星期一是星期的第一天
    %% 一个文字%

    Url:https://blog.csdn.net/m0_37826705/article/details/126142427

    FIRST函数

    作用:
    返回指定的列中第一个记录的值。
    语法:
    SELECT FIRST(column_name) FROM table_name;
    注:只有 MS Access 支持 FIRST() 函数。
    G

    GET_FORMAT函数

    作用:
    此函数有助于将日期或时间或DateTime转换为指定参数的格式化字符串。如果与DATE_FORMAT()函数结合使用,则GET_FORMAT()函数将更有用。

    语法:
    GET_FORMAT({DATE | TIME | DATETIME}, {‘EUR’ | ‘USA’ | ‘JIS’ | ‘ISO’ | ‘INTERNAL’})
    参数:
    DATE |时间|约会时间 -日期或时间或DateTime。
    “ EUR” | “美国” | ‘JIS’| “ ISO” | “内部”-使用了不同的格式。
    返回值:
    该函数将为指定的参数返回格式化的字符串。

    例:
    使用带有日期值的GET_FORMAT()函数,这意味着第一个参数固定为DATE,第二个参数连续更改。
    SELECT
    GET_FORMAT(DATE, ‘USA’) AS ‘USA_format’,
    GET_FORMAT(DATE, ‘JIS’) AS ‘JIS_format’,
    GET_FORMAT(DATE, ‘ISO’) AS ‘ISO_format’,
    GET_FORMAT(DATE, ‘EUR’) AS ‘EUR_format’;

    链接:
    https://vimsky.com/examples/usage/get_format-function-in-mysql.html

    GREATEST函数

    用法:
    GREATEST(expr_1, expr_2, …expr_n)
    从expr_1, expr_2, … expr_n等中找出最大的数返回。
    H

    Hex和Unhex函数

    作用:
    hex():将一个字符串或数字转换为十六进制格式的字符串。
    unhex():把十六进制格式的字符串转化为原来的格式。
    每对十六进制数字转化为一个字符。执行hex(str)的逆运算。即,它将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符。结果字符将作为二进制字符串返回。参数字符串中的字符必须为合法的十六进制数字:“ 0” …“ 9”,“ A” …“ F”,“ a” …“ f”。如果UNHEX在参数中遇到任何非十六进制数字,则返回NULL。

    链接:
    https://blog.csdn.net/zxyolo/article/details/113925320
    I

    IFNULL函数

    作用:
    IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

    语法:
    IFNULL(expression, alt_value)。

    例:
    SELECT IFNULL(NULL, “RUNOOB”);RUNOOB
    SELECT IFNULL(“Hello”, “RUNOOB”);Hello

    instr函数-locate(str1,str)、position(str1 in str)

    作用:
    获取子串第一次出现的位置,如果没有找到则返回0,也可以看作是返回substr字符串在str字段名中第一次出现的位置。

    例:
    SELECT INSTR(‘111222’,‘2’) ,字符串’2’在字符串’111222’的第四位。

    J

    K

    L

    last_insert_id函数

    作用:
    在向数据库具有自增列的表中插入一行之后,会生成一个AUTO_INCREMENT值,可以通过SELECT LAST_INSERT_ID()得到这个值,返回BIGINT UNSIGNED (64-bit) 类型,注意是生成(generate)AUTO_INCREMENT值,如果是插入时自增字段的值是插入的而不是生成的,则不会。

    例:
    insert into in_num(num_val) values (100);
    select last_insert_id() from in_num;

    LCASE函数

    作用:
    此方法以小写形式返回字符串。
    LCASE() 是 LOWER() 的同义词。

    例:
    select lcase(‘JAVA’);java

    LEFT函数

    作用:
    left(s,n)返回字符串s开始的最左边的n个字符。

    例:
    mysql> select left(‘yunweijia’, 5);yunwe

    LEAST函数

    作用:
    用于分别从给定参数中查找最小值。如果任何给定值为NULL,则返回NULL。否则,它将返回最小值。

    例:
    SELECT LEAST(10, 20, 30, 40);10

    LOAD_FILE()函数

    作用:
    读取一个文件并将其内容作为字符串返回。如果文件不存在或无法读取,则返回 NULL。

    例:
    SELECT LOAD_FILE(‘/data/test.txt’)

    Locate函数

    作用:
    LOCATE(字符串1,字符串2):
    返回字符串1在字符串2中第一次出现的位置,只要字符串2中包含字符串1,那么返回值必然大于0。

    例:
    Locate(str,sub) > 0,表示sub字符串包含str字符串;
    Locate(str,sub) = 0,表示sub字符串不包含str字符串。

    log函数

    作用:
    LOG(X);LOG(B,X):
    该函数的单个参数版本将返回X的自然对数,如果调用两个参数,它返回X的对数的任意基数B

    LOG10()
    用于计算以10为底的特定数字的自然对数。该数字必须大于0,否则将返回NULL。

    LOG10(X)
    参数:
    此方法接受语法中上面提到并在下面描述的一个参数:
    X - 我们要计算其对数值为10的数字。它应该是正数。
    返回值:
    它返回以10为底的给定数字x的自然对数。
    lower函数
    小写。

    例:
    1.SELECT LOWER(‘QUADRATICALLY’); # quadratically
    2.SELECT LOWER(‘ABc123asdBBB’); # abc123asdbbb

    lpad函数

    作用:
    LPAD(str,len,padstr):
    返回字符串str,左填充用字符串padstr填补到len字符长度。 如果str为大于len长,返回值被缩短至len个字符(即,不能超过 len 长)。

    LTRIM函数

    作用:
    用于从字符串中删除前导空格。

    例:
    Slect “ f”;f

    M

    MAKEDATE函数

    作用:
    根据年份和天数值创建并返回日期:

    例:
    SELECT MAKEDATE(2017, 3); 2017-01-03

    MAKETIME函数

    作用:
    根据小时、分钟和秒值创建并返回时间值:

    语法:
    MAKETIME(hour, minute, second)
    hour 必需。小时值
    minute 必需。分钟值
    second 必需。秒值

    例:
    SELECT MAKETIME(11, 35, 4); 11:35:04

    MAKE_SET函数

    作用:
    返回一个逗号分隔的字符串集合,该函数通过第一个参数对应的二进制决定是否其他字符串参数是否添加到结果集合中。

    语法:
    MAKE_SET(bits,str1,str2,str3…)

    例:
    1、当bits为0时,则返回空字符串
    2、3转换为0011 对应第一位和第二位
    mysql> select make_set(3,‘mao1’,‘mao2’,‘365’,‘com’);mao1,mao2

    MAX 函数

    作用:
    MAX(expression):
    返回一组值中的最大值

    语法:
    MAX(DISTINCT expression);
    MAX函数返回不同值的最大值,它与所有值的最大值相同。

    MID函数

    作用:
    MID()函数:如果起始位置为正数,则将从起始索引中提取给定长度的子字符串。如果为负,则将从结束索引中提取给定长度的子字符串。

    语法:
    MID(str,pos,len)
    参数:
    str-
    我们要从中提取子字符串的字符串。
    pos-
    它指示将在其中开始提取的输入字符串中的位置。
    len-
    它指示我们要提取的字符串的长度。
    返回值:
    它从给定的输入字符串中提取一个子字符串。

    例:
    SELECT MID(‘geeksforgeeks’, 1, 5) As SUBSTRING;geeks

    MIN函数

    作用:
    MIN()函数返回一组值中的最小值。

    语法:
    MIN(DISTINCT expression);

    MONTHNAME()函数

    作用:
    用于查找给定日期的月份名称。如果日期的MONTH部分为0或大于12,则返回0,否则返回1月至12月之间的月份名称。
    语法:
    MONTHNAME(date)
    参数:
    date:我们要从中提取月份名称的日期或日期时间。
    返回值:
    它从给定日期返回月份名称。

    N

    NOW函数

    作用:
    以"YYYY-MM-DD HH:MM:DD"或"YYYYMMDDHHMMSS.uuuuuuu"格式的字符串或数字返回配置的时区中的当前日期和时间。

    O

    OCT函数

    作用:
    用于将十进制数转换为八进制。它返回十进制数的等效八进制值。

    语法:
    OCT(number)
    参数:
    number:我们要转换的十进制数字。
    返回值:
    它返回十进制数的八进制值。

    OCTET_LENGTH函数

    作用:
    LENGTH(str)和OCTET_LENGTH(str)函数用于返回字符串的字节长度。
    另外,CHAR_LENGTH(str)和CHARACTER_LENGTH(str)函数用于返回字符串的字符长度,也就是字符个数。

    ORD(str) 函数

    作用:
    如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code…]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。

    例:https://blog.51cto.com/u_15077535/4798874?abTest=51cto

    P

    password函数

    作用:
    会对字符串生成加密后的新的字符串。用户在数据库中存储密码。

    语法:
    SELECT PASSWORD(‘aa’)

    注:
    OLD_PASSWORD 是旧版本的加密函数 ,生成的字符串是 16位的 如‘aa’ 加密后是 ‘077baf58491e1952’ 。

    PERCENT_RANK 函数

    MySQL从8.0开始支持窗口函数,这个功能在大多商业数据库和部分开源数据库中早已支持,有的也叫分析函数。

    PERIOD_ADD函数

    作用:
    PERIOD_ADD(P,N):
    增加N个月至周期P(格式为YYMM或YYYYMM)。返回格式为YYYYMM的值。注意:周期参数P不是日期值。

    PERIOD_DIFF函数

    作用:
    PERIOD_DIFF()函数返回两个时间相差的月份数,注意它是前一个时间减后一个时间。

    语法:
    PERIOD_DIFF(period1, period2)
    参数值
    参数 描述
    period1 需要。日期。格式:YYMM或YYYYMM
    period2 需要。另一个日期。格式:YYMM或YYYYMM

    例:
    SELECT PERIOD_DIFF(201710, 201703);
    pi
    Π。返回Pi值,即3.141593。
    POW和POWER函数
    POW(x,y) 函数和 POWER(x,y) 函数用于计算 x 的 y 次方。

    Q

    QUARTER函数

    作用:
    用于返回给定日期值的一年的季度值。它返回一个从1到4的数字。

    例:
    SELECT QUARTER(NOW());
    SELECT QUARTER(“2022-09-27”);3

    QUOTE函数

    作用:
    Quote(str)是MySQL的Sring函数。此方法返回以单引号引起来的字符串。

    例:
    select quote(‘gaga’);‘gaga’

    R

    RADIANS函数

    作用:
    将度值转换为弧度。180 degrees = π radian

    例:
    SELECT RADIANS(180);3.141592653589793

    RAND函数

    作用:
    RAND()函数调用可以在0和1之间产生一个随机数。

    RANDOM_BYTES函数
    作用:
    返回len字节长度的随机二进制字符串,长度len的合法取值为1~1024。

    例:
    mysql> select HEX(RANDOM_BYTES(16));C83CF8A2499F407E15F34F6E32948CEA

    regexp/not regexp 函数

    作用:
    MySQL regexp匹配所使用的字符,与常规正则表达式相同:

    模式 模式匹配什么
    ^ 匹配字符串开头
    $ 匹配字符串结尾
    . 匹配任意单个字符
    […] 匹配方括号间列出的任意字符
    [^…] 匹配方括号间未列出的任意字符
    p1|p2|p3 交替匹配任意 p1 或 p2 或 p3

    • 匹配前面的元素的零次或多次
    • 匹配前面的元素的一次或多次
      {n} 匹配前面的元素 n 次
      {m,n} 匹配前面的元素 m 至 n 次

    例:
    查询所有以元音开头并以ok结尾的name:
    SELECT name FROM person WHERE name REGEXP ‘1.*ok$’;

    regexp_replace函数

    作用:
    用于通过匹配字符来替换给定的字符串。

    例:
    select regexp_replace(‘str’, ‘character’, ‘new_character’);
    将str里面含有character的字符替换成new_character。

    regexp_like函数

    作用:
    regexp_like()函数用于比较给定的字符串,如果字符串相同则返回 1,否则返回 0。

    语法:
    select regexp_like(str1, str2);

    例:
    select regexp_like(‘MCA’, ‘mca’);,输出:1。

    regexp_substr函数

    作用:
    用于从给定的字符串中返回子字符串。

    语法:
    select regexp_substr(‘str’, ‘match_type’, occurrence, position);

    例:
    select regexp_substr(‘my sql function’, ‘[a-z]+’, 1, 3);,输出:function

    regexp_instr函数

    作用:
    返回与正则表达式模式匹配的子字符串的起始索引。索引从 1 开始。如果不匹配,则返回 0。

    语法:
    REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])
    参数:
    expr 为源字符串
    pat 为正则表达式
    pos 为可选参数,标识开始匹配的位置,默认为 1
    occurrence 为可选参数,标识匹配的次数,默认为 1
    return_option 为可选参数,指定返回值的类型。如果为 0,则返回匹配的第一个字符的位置。如果为 1,则返回匹配的最后一个位置,默认为0
    match_type 为可选参数,允许优化正则表达式,可包含以下字符:
    c:匹配区分大小写
    i:匹配不区分大小写
    m:多行模式。识别字符串中的行终止符。默认是仅在字符串表达式的开头和结尾匹配行终止符
    n:与.行终止符匹配
    u:仅匹配 Unix 的行结尾。只有换行符被识别为以 .,^和$结尾的行
    regexp_extract函数
    非MySQL函数,而是Hive函数。

    REVERSE函数

    reverse(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。

    REPLACE函数

    replace(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1;

    REPEAT函数

    作用:
    repeat(s,n)返回一个由重复字符串s组成的字符串,字符串s的数量等于n:
    如果n<=0,则返回一个空字符串;
    如果s或者n为null,则返回null。

    RIGHT函数

    作用:
    right(s,n)返回字符串s开始的最右边的n个字符。
    例:
    select right(‘yunweijia’, 5);eijia

    RTRIM函数

    rtrim(s)返回字符串s,字符串右侧空格字符被删除;

    S

    SPACE函数

    space(n)返回一个由n个空格组成的字符串。

    strcmp函数

    作用:
    strcmp(s1,s2):
    若所有的字符串均相同,则返回0;
    若根据当前分类次序,第一个参数小于第二个,则返回-1;
    其他情况返回1。

    SUBSTRING函数

    作用:
    substring(s,n,len)带有len参数的格式,从字符串s返回一个长度与len字符相同的子字符串,起始于位置n。也可能对n使用一个负值。假如这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。

    T

    to_base64函数

    作用:
    TO_BASE64()函数将字符串转换为以base-64编码的字符串并返回结果。

    加密:
    select to_base64(‘12345’);MTIzNDU=
    解密:
    select from_base64(‘MTIzNDU=’);12345

    TO_DAYS函数

    作用:
    TO_DAYS()函数返回日期和年份0(日期“ 0000-00-00”)之间的天数。

    注意:
    此函数与FROM_DAYS()函数相反 。
    TO_DAYS()函数只能与公历中的日期一起使用。

    例:
    1.SELECT FROM_DAYS(738776);2022-09-13
    2.SELECT TO_DAYS(“2022-09-13”);738776
    3.SELECT TO_DAYS(“2022-9-13”);738776

    TRIM函数

    删除字符串s两侧的空格

    U

    UNIX_TIMESTAMP函数

    例:
    1.SELECT UNIX_TIMESTAMP(‘2022-03-27’) ;1648310400
    2.SELECT UNIX_TIMESTAMP(‘2022-03-27 16:30:20’) ;1648369820

    注:
    对于UNIX_TIMESTAMP()函数,可传参也可以不传,
    如果不传参,则返回当前时间的时间戳;如果传参则返回指定时间的时间戳,但必须是’yyyy-MM-dd HH:mm:ss格式

    UPPER函数—UCASE

    作用:
    UPPER(str) 可以将字符串 str 中的字母字符全部转换成大写。

    例:
    SELECT UPPER(‘green’);Green
    SELECT UCASE(‘green’);Green

    UUID函数

    作用:
    SELECT UUID();用于生成唯一值。

    V

    VERSION函数

    作用:
    MySQL Version()函数用于返回MySQL数据库的当前版本。使用utf8字符集
    SELECT VERSION();

    W

    week函数

    作用:
    WEEK ()函数在 MySQL 中用于查找给定日期的周数。如果日期为空,WEEK()函数将返回空值。否则,它将返回 0 到 53 之间的周值。
    SELECT WEEK(NOW());

    weekday函数

    作用:
    DAYOFWEEK 和 WEEKDAY函数获取指定日期的星期。区别在于DAYOFWEEK获取的星期索引是以1开始,而WEEKDAY获取的星期索引是以0开始.

    DAYOFWEEK函数

    作用:
    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

    例:
    mysql> select DAYOFWEEK(‘1998-02-03’); 3

    WEEKDAY函数

    作用:
    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

    例:
    mysql> select WEEKDAY(‘1997-10-04 22:23:00’);-> 5

    weekofyear函数

    作用:此函数为日期值返回一年中的第几周, select weekofyear(date_value);

    X

    Y

    Z

    小引:

    Mysql函数网址
    官方文档:https://dev.mysql.com/doc/refman/8.0/en/

    乡野文档:https://www.cnblogs.com/smlile-you-me/p/15509044.html
    alter语句
    一: 修改表信息
    1.修改表名
    alter table test_b rename to test_a;
    2.修改表注释
    alter table test_a comment ‘测试表’;
    二:修改字段信息
    1.修改字段类型和注释
    alter table test_a modify column app_name varchar(20) COMMENT ‘应用的名称’;
    2.修改字段类型
    alter table test_a modify column app_name text;
    3.单独修改字段注释
    目前没发现有单独修改字段注释的命令语句。
    4.设置字段允许为空
    alter table test_a modify column description varchar(255) null COMMENT ‘应用描述’;
    5.增加一个字段,设好数据类型,且不为空,添加注释
    alert table test_a add url varchar(255) not null comment ‘应用访问地址’;
    6.增加主键
    alter table test_a add aid int(5) not null ,add primary key (aid);
    7.增加自增主键
    alter table test_a add aid int(5) not null auto_increment ,add primary key (aid);
    8.修改为自增主键
    alter table test_a modify column aid int(5) auto_increment ;
    9.修改字段名字(要重新指定该字段的类型)
    alter table test_a change name app_name varchar(20) not null;
    10.删除字段
    alter table test_a drop aid;
    11.在某个字段后增加字段
    alter table test_a add column gateway_id int not null default 0 AFTER aid; (在哪个字段后面添加)
    12.调整字段顺序
    alter table test_a change gateway_id gateway_id int not null after aid ; (注意gateway_id出现了2次)
    ANY_VALUE()函数
    Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式

            1、ONLY_FULL_GROUP_BY 引发
            2、通过临时去掉ONLY_FULL_GROUP_BY 模式来进行查询
            3、通过修改配置文件去掉ONLY_FULL_GROUP_BY 模式来进行查询
            4、通过ANY_VALUE()函数忽略没有参与分组的列
    
    • 1
    • 2
    • 3
    • 4

    关键字和保留字
    例:https://www.cnblogs.com/yunlong-study/p/14441645.html

    利用MySQL触发器实现check和assertion
    例:https://www.shuzhiduo.com/A/KE5QXlpMJL/

    CURRENT_TIMESTAMP时间戳
    把update_time的 DEFAULT CURRENT_TIMESTAMP后面再加上条件限制 ON UPDATE CURRENT_TIMESTAMP。这样在更新记录时,只有更新时间被修改,创建时间就是最初创建记录的时间。
    MySQL中的CURRENT_TIMESTAMP:
    在创建时间字段的时候-----
    ① DEFAULT CURRENT_TIMESTAMP
    表示当插入数据的时候,该字段默认值为当前时间
    ② ON UPDATE CURRENT_TIMESTAMP
    表示每次更新这条数据的时候,该字段都会更新成当前时间
    这两个操作是mysql数据库本身在维护,所以可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护。

    窗口函数
    https://www.jianshu.com/p/55f146fc9ee7;

    正则表达式函数
    https://blog.csdn.net/haitunmin/article/details/75234231?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-75234231-blog-118197636.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-75234231-blog-118197636.pc_relevant_default&utm_relevant_index=18
    https://blog.csdn.net/lonelymanontheway/article/details/118197636


    1. aeiou ↩︎

  • 相关阅读:
    毕导:大学生毕业信息资源分享和就业方向指导
    【翻译】Neural 3D Mesh Renderer
    Spring MVC - 相关内容2
    Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)
    C++--day7
    算法 - 二分
    Leetcode.2731 移动机器人
    网络技术-Cisco路由器
    Flow Problem hdu 3549
    Java 中那些绕不开的内置接口 -- Comparable 和 Comparator
  • 原文地址:https://blog.csdn.net/m0_50105465/article/details/127650142