数据库系列之字符串运算
常见的字符串运算如下:
函数 | 说明 |
---|---|
replace(str, a,b) | 将字符串str中的a替换成b |
concat(str1, str2, ... , strn) | 将str1, str2, ... , strn用合并为一个完整的字符串 |
concat_ws(s, str1, str2, ... , strn) | 将str1, str2, ... , strn用连接符s合并为一个完整的字符串 |
left(str, n) | 获取字符串str最左边的n个字符 |
right(str, n) | 获取字符串str最右边的n个字符 |
substring(str, m, n) | 获取字符串str从m位置开始的长度为n的字符 |
ltrim(str) | 去除字符串str左边的空格 |
rtrim(str) | 去除字符串str右边的空格 |
trim(str) | 去除字符串str开头和结尾的空格 |
char_length(str) | 返回字符串str的字符长度 |
length(str) | 返回字符串str的字节长度 |
repeat(str, n) | 将字符串str重复n遍 |
1 字符串替换
SELECT
uid,
REPLACE(uid,"E", "e") as replace_id
FROM
chapter7
result:
2 字符串合并
2.1 默认连接符进行合并
SELECT
uid,
name,
CONCAT(uid, name) as id_name
FROM
chapter7
result:
2.2 自定义连接符进行合并
SELECT
uid,
name,
CONCAT_WS("-",uid, name) as id_name
FROM
chapter7
result:
3 字符串截取
3.1 截取左边部分
SELECT LEFT("2019-10-01 12:20:23",10)
result:
3.2 截取右边部分
SELECT RIGHT("2019-10-01 12:20:23",8)
result:
3.3 截取中间部分
SELECT SUBSTRING("2019-10-01 12:20:23",6, 2)
result:
4 字符串匹配
4.1 匹配任意长度字符
SELECT
* FROM
chapter7
WHERE
`name` LIKE "张%"
result:
这里是匹配name这一列以张作为开头的记录
SELECT
*
FROM
chapter7
WHERE
`name` LIKE "%李%"
result:
这里是匹配name这一列包含张的记录(张可以不作为开头)
4.2 匹配单个字符
SELECT
*
FROM
chapter7
WHERE
`name` LIKE "李_"
result:
5 字符串计数
5.1 获取字符串的字符数
SELECT CHAR_LENGTH("sql")
result:
SELECT CHAR_LENGTH("删库跑路")
result:
5.2 获取字符串的字节数
SELECT LENGTH("sql")
result:
SELECT LENGTH("删库跑路")
result:
这里可以发现,字符串为英文时字节长度和字符长度是一样的,包含中文时就会因为编码的问题二者产生差异
6 去除字符串空格
SELECT
LENGTH(" abcdef ") as str_length,
LENGTH(LTRIM(" abcdef ")) as lstr_length,
LENGTH(RTRIM(" abcdef ")) as rstr_length,
LENGTH(TRIM(" abcdef ")) as tstr_length
7 字符串重复
SELECT REPEAT("sql", 3)
result:
转载自:https://juejin.cn/post/7022084180414562317