zoukankan      html  css  js  c++  java
  • 【学习总结】SQL的学习-4-常用函数介绍

    参考链接

    目录

    =======================================================

    合并字符串函数

    概述

    • 字符函数接受字符参数,这些参数可以是表中的列,也可以是一个字符串表达式。

    合并字符串函数concat

    • 语法:concat(s1,s2,...,sn)

    • 解析

      • 该函数会将传入的参数连接起来返回合并的字符串类型的数据。

      • 如果其中一个参数为null,则返回值为null。

    • 合并字符串(即数据不是来自表,而是直接手动键入的):

      • 示例1:select concat ('huang','lao','shi'), concat('huang','lao','shi',null) -- 直接输出语句中的字符串

      • 示例2:select concat(curdate(),12.2);

    • 将字段合并输出

      • 示例:select concat (name, "|", house_location) from houses;

    合并字符串函数concat_ws

    • 语法:concat_ws(seq, s1, s2, ... , sn)

    • 解析

      • 本函数与concat()的区别:多了一个表示分隔符的seq参数,不仅将传入的其他参数连接起来,而且会通过分隔符将各个字符串分隔开来。

      • 分隔符可以是一个字符,也可以是其他参数。如果分隔符为null,则返回结果为null。函数会忽略任何分隔符后的参数null。

    • 使用分隔符合并字符串并输出的示例

      • 示例1:select concat_ws('-','020','8331234567');

      • 示例2:select concat_ws('-','020','8331234567'); -- 连接多个字符串

      • 示例3:select concat_ws('null','020','8331234567'), concat_ws('-','020','null','8331234567'); -- null的处理

    =======================================================

    比较字符串大小的函数

    获取字符串长度的函数length

    • 关键字:

      • 获取字符串长度函数:length()

      • 获取字符数函数:char_length()

    • 语法:

      • length(str):一个汉字算3个字符,一个数字或字母算一个字符。

      • char_length(str):不管是汉字还是数字或字母,都算一个字符。

    • 示例:

      • 示例1:对比汉字和字母数字的不同结果

      • 示例2:数字的结果对比

      • 示例3:对负数的处理。注:ceil(n) 取大于等于数值n的最小整数;

    比较字符串大小的函数strcmp

    • 关键字:strcmp()

    • 语法:strcmp(str1, str2)

    • 解析:

      • 如果str1>str2,则返回1;如果str1<str2,则返回-1;如果str1==str2,则返回0。
    • 示例:(根据安装时的配置,遵循utf-8字符串的规律,基于不同字符集,可能结果不同)

      • 示例1:等长,且相同大小写的字母比较

      • 示例2:相同字母的大小写比较

      • 示例3:不等长的字母比较

      • 示例4:单个数字比较

      • 示例5:不等长的数字比较

      • 示例6:单个中文字符比较

    =======================================================

    大小写转换函数

    将字母转换为大写的函数upper和ucase

    • 语法:

      • upper(s)

      • ucase(s)

    将字母转换为小写的函数lower和lcase

    • 语法:

      • lower(s)

      • lcase(s)

    示例

    • 字母转换对比:结果一致

    • 只有非字母符号时:直接输出,结果不变

    • 字母与非字母组合:字母正常转换,非字母不变

    =======================================================

    查找字符串函数

    返回字符串位置的函数find_in_set

    • 关键字:find_in_set()

    • 语法:find_in_set(str1, str2)

    • 解析:

      • 该函数会返回在字符串str2中与str1相匹配的字符串的位置,参数str2字符串中包含若干个用逗号隔开的字符串。
    • 示例:


    返回指定字符串位置的函数field

    • 关键字:field()

    • 语法:field(str, str1, str2...)

    • 解析:

      • 该函数返回第一个与字符串str匹配的字符串的位置。
    • 区别:

      • 字符串个数:find_in_set只有两个字符串,而field可以传入多个字符串。
      • 空格:find_in_set空格在任意位置都有效,而field放在前面的空格有效,放在后面的空格可忽略。
    • 示例:

    返回指定位置的字符串的函数elt

    • 关键字:elt()

    • 语法:elt(n,str1,str2,...);

    • 解析:

      • 返回指定位置n的字符串
    • 注意:

      • 如果n超过了字符串个数的范围,(大于或小于),则返回null;

      • 对于空格:任意位置的空格(前面的空格或者后面的空格)都算在返回结果内,不会自动删除。

    • 示例:


    =======================================================

    字符串截取与替换函数

    从左边或右边截取子字符串的函数left和right

    • 语法:left(str, num), right(str, num)

    • 解析:

      • 返回字符串str中包含前num个字母(从左边数)、(从右边数)的字符串,并按照原顺序返回结果。

      • 参数num超出正常范围时:返回空白,没有null的空白那种。

    • 示例:


    截取指定位置和长度的字符串的函数substring

    • 语法1:substring(str, num, len)

    • 解析:

      • 返回字符串str中的第num个位置开始,且长度为len的子字符串。
    • 示例:

    • 语法2:mid(str, num, len)

    • 解析:

      • substring(str,pos,len)的同义词,参数从1开始,不是从0开始。
    • 示例:

    替换字符串的函数replace

    • 语法:replace(str, substr, newstr)

    • 解析:

      • 将字符串str中的子字符串substr用字符串newstr来替换。
    • 示例:

    =======================================================

    获取整数函数

    返回大于或等于数值x的最小整数的函数ceil

    • 语法:ceil(x)

    • 示例:

    返回小于或等于数值x的最大整数的函数floor

    • 语法:floor(x)

    • 示例:

    截取数值函数truncate

    • 语法:truncate(x,y)

    • 解析:

      • 返回数值x,保留小数点后y位。
    • 注意:

      • y为正数即取小数点,y为负数即往整数位截取;简单粗暴直接截取,并不进行四舍五入。
    • 示例:

    函数返回值x经过四舍五入操作后的数值的函数round

    • 语法:round(x);round(x,y)

    • 解析:

      • x表示原数值,y表示要保留的小数位数。y可以省略。
    • 注意:

      • 负数:数值位按照正数处理,不按照负数的数学规则。
    • 对比:round与truncate

      • round:截取并四舍五入;truncate:直接截取,不四舍五入。
    • 示例:



    =======================================================

    获取日期和时间的函数

    获取当前日期和时间的函数now和sysdate

    • 关键字:

      • now(); sysdate(); current_timestamp(); current_date(); current_time();
    • 语法:

      • 使用select 函数名(); -- 来查看时间函数的返回值
    • now():返回该条语句(而不是该函数)运行时的具体日期时间。

    • sysdate():与now()类似。

    • 三个current时间函数:结果同now,不变。

      • current_timestamp():获取当前时间戳,包括年月日+时分秒。

      • current_date():获取当前日期,包括年月日。

      • current_time():获取当前时间,包括时分秒。

    • 辨析:

      • now():在语句执行开始时,值就得到了,后面再取,值不变;

      • sysdate():在函数执行时动态得到值,后面再取,值会变。

    • 示例:


    获取日期和时间各部分值year和hour等




    =======================================================

    格式化函数

    format函数

    • 语法与解析:

      • 格式化数字:format(x,y):把x格式化为以逗号隔开的数字序列,y是结果的小数位数。

      • 格式化时间:date_format(date,fmt), time_format(time,fmt) :

        • 依照字符串fmt格式化时间:'%+字母+分隔符+%+字母+分隔符+...'
        • 不同字母代表不同含义:y-年,m-月,d-日,w-星期,r-带AM,PM的时分秒,p-仅am/pm, h-i-s:时分秒,等。
        • 注意:相同字母的不同大小写,对应不同的输出格式。
    • 注意:format-数字时会进行四舍五入。

    • 示例







    去除首尾空格函数trim

    • 关键字:

      • ltrim(str), rtrim(str), trim(str)
    • 解析:

      • 返回去掉开始处、结束处、首尾空格的字符串
    • 示例

    =======================================================

    聚合函数

    关键字 avg sum count min max

    语法与解析

    • 注意:

      • 1、格式:select + 函数名(参数名)

      • 2、配合group by进行分组,注意字段有重复元素和无重复元素得到的结果的不同。

    示例



    =======================================================

    控制流函数

    条件IF

    • 语法:IF(test, t, f)

    • 解析:如果test为真,返回t;否则,返回f。

    • 示例:

      • SELECT IF(1<10, 2, 3); -- 输出:2

    判非空IFNULL

    • 语法:IFNULL(arg1, arg2)

    • 解析:如果arg1不是空,则返回arg1;否则,返回arg2。

      • 注:参数可以是select语句。
    • 示例:


    相等则返回空NULLIF

    • 语法:NULLIF(arg1, arg2)

    • 解析:如果arg1=arg2,则返回null;否则,,返回arg1。

    • 示例:

    组合判断1-case-when

    • 语法:CASE WHEN[test1] THEN [result1] WHEN..THEN.. ELSE [default] END

      • 注意:此处的when相当于switch-case里的每个case,可以组合为when...when....when...else;注意else别放在when中间。
    • 解析:如果testN为真,则返回resultN;否则,返回default。

      • 注:如果有多个符合,则返回第一个匹配的testN对应的结果。
    • 示例:

    组合判断2-case-xx-when

    • 语法:CASE[test] WHEN[val1] THEN [result1] WHEN..THEN.. ELSE [default] END

    • 解析:如果test和valN相等,则返回resultN,否则返回default。

      • 注意:如果有多个符合,则返回第一个匹配的testN对应的结果。
    • 示例:


    =======================================================

    系统信息函数

    查询系统函数version-database-user等

    • 语法与解析

      • 返回数据库版本号:version()

      • 返回当前数据库名:database()

      • 返回当前用户名:user(), system_user(), session_user(), current_user()

    • 示例:





    END

  • 相关阅读:
    (转) SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程
    Swagger2 生成 Spring Boot API 文档
    tar命令解压时如何去除目录结构及其解压到指定目录 (--strip-components N)
    Alpine Linux配置使用技巧【一个只有5M的操作系统(转)】
    配置Tomcat直接显示目录结构和文件列表
    React package.json详解
    Ubuntu中的“资源管理器”System Monitor
    Ubuntu18.10下安装Qt5.12过程记录
    QT QTransform与QMatrix 有啥区别?
    QT运行出错:QObject::connect: Parentheses expected以及QObject::connect: No such slot ***
  • 原文地址:https://www.cnblogs.com/anliux/p/12760620.html
Copyright © 2011-2022 走看看