Mysql 单行函数 聚合函数
随机值 四舍五入,截断操作
.ROUND(x,y)
- 逻辑:先对
x
四舍五入,然后保留y
位小数 。
TRUNCATE(x,y)
用于将数字 x
截断到指定的小数位数 y
。和 ROUND()
函数不同,TRUNCATE()
函数直接去除指定小数位后的数字,不进行四舍五入操作。
指数和对数
进制间的转换
BIN
是 Binary(二进制)的缩写
HEX
是 Hexadecimal(十六进制)的缩写
OCT
是 Octal(八进制)的缩写
CONV
是 Convert(转换)的缩写,用于在不同进制之间转换数值。
参数含义为 CONV(数值, 原进制, 目标进制)
,CONV(10,10,8)
表示将十进制的 10 转换为八进制,结果与 OCT(10)
一致,为 12
。
字符串函数
一、基础信息获取
函数 | 功能 | 记忆点 |
---|---|---|
ASCII(s) | 取字符串 s 第一个字符的 ASCII 码 | 首字符编码 |
CHAR_LENGTH(s) | 统计字符串的字符数量(与 CHARACTER_LENGTH(s) 等价) | 字符数 |
LENGTH(s) | 统计字符串的字节数量(受字符集影响,如 UTF-8 中汉字占 3 字节) | 字节数 |
二、拼接与替换
#字符串的索引是从1开始的!
在 SQL 的字符串函数体系里,索引通常从 1 开始;但其他编程语言各有规则,
函数 | 功能 | 记忆点 |
---|---|---|
CONCAT(s1,s2,...sn) | 拼接多个字符串为一个 | 直接拼接 |
CONCAT_WS(x, s1,s2,...sn) | 用分隔符 如 | 带分隔符拼接 |
INSERT(str, idx, len, replacestr) | 从 str 的第 idx 位开始,替换 len 个字符为 replacestr | 精准位置替换 |
REPLACE(str, a, b) | 用 b 替换 str 中所有的 a | 全局内容替换 |
三、大小写与截取
函数 | 功能 | 记忆点 |
---|---|---|
UPPER(s) / UCASE(s) | 转大写 | 全大写 |
LOWER(s) / LCASE(s) | 转小写 | 全小写 |
LEFT(str, n) | 取 str 最左边 n 个字符 | 左截取 |
RIGHT(str, n) | 取 str 最右边 n 个字符 | 右截取 |
SUBSTR(s, index, len) | 从 s 的 index 位置开始,取 len 个字符(与 SUBSTRING 、MID 等价) | 任意位置截取 |
四、填充与去空格
函数 | 功能 | 记忆点 |
---|---|---|
LPAD(str, len, pad) | 用 pad 填充 str 左侧,直到长度为 len | 左填充 |
RPAD(str, len, pad) | 用 pad 填充 str 右侧,直到长度为 len | 右填充 |
LTRIM(s) | 去掉 s 左侧的空格 | 去左空格 |
RTRIM(s) | 去掉 s 右侧的空格 | 去右空格 |
TRIM(s) | 去掉 s 首尾的空格 | 去首尾空格 |
TRIM(s1 FROM s) | 去掉 s 首尾的 s1 字符(如 TRIM('x' FROM 'xxabcxx') → abc ) | 去首尾指定字符 |
TRIM(LEADING s1 FROM s) | 仅去掉 s 开头的 s1 | 去开头指定字符 |
TRIM(TRAILING s1 FROM s) | 仅去掉 s 结尾的 s1 | 去结尾指定字符 |
五、重复与生成
函数 | 功能 | 记忆点 |
---|---|---|
REPEAT(str, n) | 重复 str 共 n 次(如 REPEAT('ab', 3) → ababab ) | 字符串重复 |
SPACE(n) | 生成 n 个空格的字符串 | 空格生成器 |
六、比较与查找
函数 | 功能 | 记忆点 |
---|---|---|
STRCMP(s1, s2) | 比较 s1 和 s2 的 ASCII 码大小(返回 -1 /0 /1 表示小 / 相等 / 大) | 编码比较 |
LOCATE(substr, str) | 找 substr 在 str 中第一次出现的位置(从 1 开始计数,找不到返回 0 ;与 POSITION(substr IN str) 、INSTR(str, substr) 等价) | 找子串位置 |
ELT(m, s1,s2,...sn) | 根据 m 的值返回对应位置的字符串(如 ELT(2, 'a','b') → b ) | 按序取串 |
FIELD(s, s1,s2,...sn) | 找 s 在 s1,s2,...sn 中第一次出现的位置(找不到返回 0 ) | 找串在列表的位置 |