MySQL单行函数——数值与字符串函数

65 阅读3分钟

学习记录 MySQL 单行函数的使用,分类如下

  1. 数值函数
    • 基本函数
    • 角度与弧度互换函数
    • 三角函数
    • 指数与对数
    • 进制间的转换
  2. 字符串函数

不同DBMS函数的差异

我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用 ( || )或者(+) 来做拼接符,而在 MySQL 中的字符串拼接函数为concat( )。大部分 DBMS 会有自己特定的函数,这就意味着采用 SOL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。

MySQL 提供了丰富的内置函数,这些函数使得数据的维护与管理更加方便,能够更好地提供数据的分析与统计功能,在一定程度上提高了开发人员进行数据分析与统计的效率。

MySQL提供的内置函数从实现的功能角度可以分为数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数、获取 MySQL 信息函数、聚合函数等。这里,我将这些丰富的内置函数再分为两类: 单行函数聚合函数(或分组函数)在这里插入图片描述

什么是单行函数

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以嵌套
  • 参数可以是一列或者一个值

1. 数值函数

1.1 基本函数

函数用法
ABS( X )返回 X 的绝对值
SIGN( X )返回 X 的符合, 正数返回 1,负数返回 -1,0 返回 0
PI( )返回圆周率的值
CEIL( X ), CEILING( X )返回大于或等于某个值的最小整数
FLOOR( X )返回小于或等于某个值的最大整数
LEAST(e1, e2, e3...)返回列表中的最小值
GREATEST(e1, e2, e3...)返回列表中的最大值
MOD(x, y)返回 X 除以 Y 后的余数
RAND( )返回 0 ~ 1 的随机值
RAND( X )返回 0 ~ 1 的随机值,其中 X 的值用作种子值,相同 X 的值会产生相同的随机数
ROUND( X )返回一个对 X 的值进行四舍五入后, 最接近于 X 的整数
ROUND( x, y )返回一个对 X 的值进行四舍五入后最接近 X 的值,并保留到小数点后面 Y 位
TRUNCATE( x, y )返回数字 X 截断 为 y 位小数的结果
SQRT( X )返回 X 的平方根,当 X 为负数时,返回 NULL

1.2 角度与弧度互换函数

函数用法
RADINAS( X )将角度转化为弧度,其中参数 X 为角度值
DEGREES( X )将弧度转化为角度,其中 X 为弧度值

1.3 三角函数

函数用法
SIN( X )返回 X 的正弦值,其中参数 X 为弧度值
ASIN( X )返回 X 的反正弦值,即获取正弦为 X 的值。如果 X 的值不在 -1 到 1 之间,则返回 NULL
COS( X )返回 X 的余弦值,其中参数 X 为弧度值
ACOS( X )返回 X 的反余弦值,即获取余弦为 X 的值。如果 X 的值不在 -1 到 1 之间,则返回 NULL
TAN( X )返回 X 的正切值,其中参数 X 为弧度值
ATAN( X )返回 X 的反正切值,即返回正切值为 X 的值
ATAN2( X )返回两个参数的反正切值
COT( X )返回 X 的余切值,其中参数 X 为弧度值

1.4 指数与对数

函数用法
POW(X,Y),POWER(X,Y)返回 X 的 Y 次方
EXP(X)返回 e 的 X 次方,其中 e 是一个常数,2.718281828459045
LOG10(X)返回以 10 为底的 X 的对数,当 X <= 0 时,返回的结果为 NULL
LOG2(X)返回以 2 为底的 X 的对数,当X <= 0 时,返 NULL

1.5 进制间的转换

函数用法
BIN(X)返回 X 的二进制编码
HEX(X)返回 X 的十六进制编码
OCT(X)返回 X 的八进制编码
CONV(X, f1, f2)返回 f1 进制数变成 f2 进制数

2. 字符串函数

函数用法
ASCII(S)返回字符串 S 中的第一个字符的 ASCI 码值
CHAR_LENGTH(S)返回字符串 S 的字符数。作用与 CHARACTER_LENGTH(S)相同
LENGTH(S)返回字符串 S 的字节数,和字符集有关
CONCAT(s1, s2, .......sn)连接 s1,s2.....sn 为一个字符串
CONCAT_WS(x, s1, s2, ....... sn)同 CONCAT(s1, s2....)函数,但是每个字符串之间要加上 x
INSERT(str, idx, len, replacestr)将字符串 str 从第 idx 位置开始,len 个字符长的子串替换为字符串 replacestr
REPLACE(str, a, b)用字符串 b 替换字符串 str 中所有出现的字符串 a
UPPER(s) 或 UCASE(s)将字符串 s 的所有字母转成大写字母
LOWER(s)或LCASE(s)将字符串 s 的所有字母转成小写字母
LEFT(str, n)返回字符串 str 左边的 n 个字符
RIGHT(str, n)返回字符串 str 右边的 n 个字符
LPAD(str, len, pad)用字符串 pad 对 str 左边进行填充,直到 str 的长度为 len 个字符
RPAD(str ,len, pad)用字符串 pad 对 str 右边进行填充,直到 str 的长度为 len 个字符
LTRIM(s)去掉字符串 s 左侧的空格
RTRIM(s)去掉字符串 s 右侧的空格
TRIM(s)去掉字符串 s 开始与结尾的空格
TRIM(s1 FROM s)去掉字符串 s 开始与结尾的 s1
TRIM(LEADING s1 FROM s)去掉字符串 s 开始处的 s1
TRIM(TRAILING s1 FROM s)去掉字符串 s 结属处的 s1
REPEAT(str, n)返回 str 重复 n 次的结果
SPACE(n)返回 n 个空格
STRCMP(s1, s2)比较字符串 s1, s2 的 ASCII 码值的大小
SUBSTR(s, index, len)返回从字符串 s 的 index 位置其 len 个字符,作用与 SUBSTRING(s,n,len) MID(s,n,len)相同
LOCATE(substr, str)返回字符串 substr 在字符串 str 中首次出现的位置,作用于POSITION INSTR 相同。未找到,返回 0
ELT(m, s1, s2, ...sn)返回指定位置的字符串,如果 m=1,则返回 s1,如果 m=2,则返回 s2,如果 m=n,则返回 sn
FIELD(s, s1, s2,...sn)返回字符串 s 在字符串列表中第一次出现的位置
FIND_IN_SET(s1, s2)返回字符串 s1 在字符串 s2 中出现的位置。其中,字符串 s2 是一个以逗号分隔的字符串
REVERSE(S)返回 s 反转后的字符串
NULLIF(value1,value2)比较两个字符串,如果 value1 与 value2 相等,则返回 NULL,否则返回 value1

注意:MySQL中,字符串的位置是从 1 开始的