当前位置:数据分析 > mysql常用函数

mysql常用函数

  • 发布:2023-10-10 18:14


本文内容:

  • mysql功能介绍
  • 聚合功能
    • 平均
    • 计数
    • 最大
    • 分钟
    • 总和
  • 处理字符串的函数
    • 合并字符串函数:concat(str1,str2,str3…)
    • 比较字符串大小函数:strcmp(str1,str2)
    • 获取字符串字节数函数:length(str)
    • 获取字符串的字符数函数:char_length(str)
    • 字母大小写转换函数:大写:upper(x),ucase(x);小写 lower(x),lcase(x)
    • 字符串搜索功能
    • 获取指定位置的子字符串
    • 字符串空函数
    • 字符串替换功能:
  • 数值处理函数
    • 绝对值函数:abs(x)
    • 向上取整函数:ceil(x)
    • 向下舍入函数:floor(x)
    • 模函数:mod(x,y)
    • 随机数函数:rand()
    • 舍入函数:round(x,y)
    • 数值截取函数:truncate(x,y)
  • 处理时间和日期的功能
    • 获取当前日期:curdate(), current_date()
    • 获取当前时间:curtime(),current_time()
    • 获取当前日期和时间:now()
    • 从日期中选择月份:月份(日期),月份名称(日期)
    • 从日期中选择周数:周(日期)
    • 从日期中选择周数:年(日期)
    • 从时间中选择小时:小时(时间)
    • 从时间中选择分钟:分钟(时间)
    • 从时间中选择星期几:工作日(日期),日期名称(日期)

首发日期:2018-04-14


mysql功能介绍:

  • 为了简化操作,mysql提供了大量的函数供程序员使用(比如想要输入当前时间,可以调用now()函数)
  • 函数可以出现的地方:insert语句的values()中、update语句中、delete语句中、query语句及其子句中。


聚合功能:

  • 聚合函数用于聚合记录(例如,如果您不想知道每个学生记录的确切信息,而只想知道学生记录的数量,则可以使用 count())。
  • 聚合函数用于处理“聚合数据”,不需要详细的记录信息。
  • 聚合函数(聚合函数) 对一组行进行操作、计算并返回单个值的函数。

实验表数据(以下运行数据均基于此表):

创建 学生(
名称 varchar(15),
性别varchar(15),
年龄int
);
插入 学生("lilei","male",18);
插入 学生("alex","male",17);
插入 学生("jack","male",20);插入 学生("john","male",19);
插入 学生("nullpeople","male",);

avg(场)函数:

  • 返回指定字段中数据的平均值
  • avg() 通过计算中的行数并计算指定字段的数据总和来求指定字段的平均值。
  • avg() 函数忽略列值为 NULL 的行。如果某行中的指定字段为空,则该行不计算在内。

计数(字段)函数:

  • 返回指定字段的数据行数(记录数)
  • 该字段可以是“*”,代表所有记录的条数。与字段数不同时,记录数包含空字段的记录,但字段数不包含空值的记录。

max(场)函数:

  • 返回指定字段中数据的最大值
  • 如果指定字段的数据类型为字符串类型,则先按字符串进行比较,然后返回最大值。
  • max() 函数忽略列值为空的行​​

min(场)函数:

  • 返回指定字段中数据的最小值
  • 如果指定字段的数据类型为字符串类型,则先按字符串进行比较,然后返回最小值。
  • min() 函数忽略列值为空的行​​

sum(字段)函数:

  • 返回指定字段中数据的总和
  • sum() 函数会忽略列值为空的行​​

补充:

  • 如果聚合函数的字段数据为空,则空值的记录将被忽略。
    • 例如avg:有5行,但是年龄数据只有4行。计算结果只算四行,
    • 但是如果不是针对某个字段,则会被计算。例如count(x)计算记录数,null值不影响结果。
  • 还有一些标准差聚合函数,这里不再赘述。如果想了解更多可以去百度。
  • 聚合函数在5.0+版本中还有一个选项DISTINCT,与select类似,忽略相同的字段。 【不可用于计数(x)】


处理字符串的函数:

合并字符串函数:concat(str1,str2,str3…)

  • 用于将多个字符串合并为一个字符串,如果传入的值有null,则最终结果为null
  • 如果想将多个字符串合并结果中的每个字符串分开,可以使用concat_ws(separator, str1, str2, str3...),如果传入的分隔符为null,那么最终结果为null (但此时如果str为null,则不影响结果)

比较字符串大小函数:strcmp(str1,str2)

  • 用于比较两个字符串的大小。当左大于右时返回1,当左等于右时返回0,当左小于右时返回-1,
  • strcmp类似于编程语言中的比较字符串函数(基于ascll代码?),它会从左到右一一进行比较,直到其中一个不相等时才返回结果,否则比较将会进行到底。

获取字符串函数中的字节数:length(str)

  • 用于获取字符串字节长度(返回字节数,所以要注意字符集)

获取字符串中的字符数函数:char_length(str)

  • 用于获取字符串长度

字母大小写转换函数:大写:upper(x),ucase(x);小写 lower(x),lcase(x)

  • upper(x),ucase(x) 用于将字母转换为大写。 DE2NDUyMjIzOC0xOTE1NzE2MTkwLnBuZw==/}
  • lower(x),lcase(x) 用于将字母转换为小写。 NDE2NDUyMzAzNC0yMTMxNzg0MTY5LnBuZw==/}
  • 对于已经存在的情况,不会执行大小写转换。

字符串搜索功能:

  • find_in_set(str1,str2)
    • 返回字符串 str1 在 str2 中的位置。 str2包含多个逗号分隔的字符串(str2可以看成一个列表,元素为多个字符串,搜索结果为str1在str2列表中的索引位置,从1开始)
    • 1 {IMG_13:Ahr0Chm6ly9pbWFNZXMYMDE4LMNUYMXVZ3MUY2JSB2CVMTA1MZA3OS8ymDE4MDQVMZA3OS0YMDQXDE2NDE1NDE1NY03MTU0MJM2 Mdkucg5n/}
  • 字段(str,str1,str2,str3…)
    • 与find_in_set类似,只不过str2由一个类似列表的字符串变成了多个字符串,并且返回了str在str1、str2、str3…中的位置。
  • 定位(str1,str2):
    • 返回子字符串 str1 在字符串 str2 中的位置
  • 位置(str1 IN str2)
    • 返回子字符串 str1 在字符串 str2 中的位置
  • 指令(str1,str2)
    • 返回子字符串str2在字符串str1中的位置【注意这里是相反的】

获取指定位置的子串:

  • elt(索引,str1,str2,str3…)
    • 返回指定索引位置处的字符串
  • 左(str,n)
    • 截取str
    • 左侧的n个字符
  • 右(str,n)
    • 截取str右侧的n个字符
  • 子字符串(str,索引,len)
    • 从str
    • 的索引位置截断len个字符

字符串空函数:

  • ltrim(str):
    • 删除字符串 str 左侧的空格
  • rtrim(str)
    • 删除字符串 str 右侧的空格
  • 修剪()
    • 去掉字符串str两边的空格
    • 2 {IMG_24:Ahr0Chm6ly9pbwfnzxMymDe4LMNUYMXVZ3MUY2JSB2CVMTA1MZA3OS8ymDE4MDQVMTA1MZA3OS0YMDQXNDQNS03MDQWNTG1 Nzycg5n/}

字符串替换功能:

  • 插入(str1,索引,len,str2)
    • 使用str2从str1的索引位置开始替换str1的len个元素
  • 替换(str,str1,str2)
    • 将 str 中的所有子字符串 str1 替换为 str2
    • 2 {IMG_26:Ahr0Chm6ly9pbWFNZXMYMYMDE4LMNUYMXVZ3MUY2JSB2CVMTA1MZA3OS8ymDE4MDQVMTA1MZA3OS0YMDQXNDQYMS01MJGXNZU4 Mdcucg5n/}


用于处理数值的函数:

绝对值函数:abs(x)

  • 返回x
  • 的绝对值

向上舍入函数:ceil(x)

  • 返回 x 向上舍入的整数

向下舍入函数:floor(x)

  • 返回 x 的向下舍入整数

模函数:mod(x,y)

  • 返回 x mod y 的结果

随机数函数:rand()

  • 返回0-1范围内的随机数
  • 如果想在某种情况下使用相同的随机值,可以使用rand(x),当x相同时,它返回相同的随机结果。

舍入函数:round(x,y)

  • 返回值 x 和 y 作为十进制结果(四舍五入)
  • 2 {IMG_28:Ahr0Chm6ly9pbWFNZXMYMYMDE4LMNUYMXVZ3MUY2JSB2CVMTA1MZYMDE4MDQVMTA1MZA3OS0YMDQXNDE2NDE3MY0ZNJG1ODGX Mtkucg5n/}

数值截取函数:truncate(x,y)

  • 返回值 x 截断至 y 位小数的结果(不四舍五入)


处理时间和日期功能:

获取当前日期:curdate(), current_date()

  • 返回格式为:

获取当前时间:curtime(), current_time()

  • 返回格式为:

获取当前日期和时间:now()

  • 返回格式为:

从日期中选择月份:月份(日期),月份名称(日期)

从日期中选择周数:周(日期)

  • 返回格式为:

从日期中选择周数:年(日期)

  • 返回格式为:

从时间中选择小时:小时(时间)

  • 返回格式为:

从时间中选择分钟:分钟(时间)

  • 返回格式为:

从时间中选择星期几:工作日(日期),日期名称(日期)

  • 返回格式为:

日期函数非常常用。如果想了解更多可以参考官方文档:

https://www.sychzs.cn/doc/refman/5.7/en/date-and-time-functions.html


如果想了解更多功能,可以参考官方文档(以下针对5.7):

https://www.sychzs.cn/doc/refman/5.7/en/func-op-summary-ref.html


相关文章

最新资讯

热门推荐