❤️持续创作,加速成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情”
🎨 个人介绍
👉大家好,我是:旺仔不是程序员
👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻
👉你的支持,是我每天更新的动力。
👉赞点:👍 留言:✍ 收藏:⭐
👉个人格言:想法一步一步的落实,才是你我前进最佳选择。
字符串函数
1. 通用字符串函数
- 计算字符串字符数的函数和字符串长度的函数
# 使用CHAR_LENGTH函数计算字符串字符个数,记录字符数
# 输入语句如下:中国 2 个字符
SELECT CHAR_LENGTH('date'), CHAR_LENGTH('中国');
# 使用LENGTH函数计算字符串长度,记录字节数
# 输入语句如下:中国 6 字节
SELECT LENGTH('date'), LENGTH('中国');
- 合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)
# 使用CONCAT函数连接字符串,有NULL 返回Null
# 输入语句如下:
SELECT CONCAT('MySQL', '5.6'),CONCAT('My',NULL, 'SQL');
# 使用CONCAT_WS函数连接带分隔符的字符串,有NULL,排除NULL,继续连接后边的
# 输入语句如下:
SELECT CONCAT_WS('-', '1st','2nd', NULL,'3rd'), CONCAT_WS('*', '1st', NULL, '3rd');
- 替换字符串的函数INSERT(s1,x,len,s2)
# 使用INSERT函数进行字符串替代操作,输入语句如下:
## 将下面第2个字符开始,以后的字符替换
SELECT INSERT('Quest', 2, 4, 'What') AS col1, # 输出结果:QWhat
## 如果后边没有,不追加,下边代码不做替换,-1代表从最后一个开始
SELECT INSERT('Quest', -1, 4, 'What') AS col2, # 输出结果:Quest
## 如果超出替换字符的最大长度,正常替换就好
SELECT INSERT('Quest', 3, 100, 'Wh') AS col3; # 输出结果:QuWh
- 字母大小写转换函数
# 使用LOWER函数或者LCASE函数将字符串中所有字母字符转换为小写,输入语句如下:
SELECT LOWER('BEAUTIFUL'), LCASE('Well');
# 使用UPPER函数或者UCASE函数将字符串中所有字母字符转换为大写,输入语句如下:
SELECT UPPER('black'), UCASE('BLacK');
- 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
# 使用LTRIM函数删除字符串左边的空格,输入语句如下:
SELECT '( book )',CONCAT('(',LTRIM(' book '),')');
# 使用LTRIM函数删除字符串右边的空格,输入语句如下:
SELECT CONCAT( '(', RTRIM (' book '), ')');
SELECT '( book )',CONCAT('(', RTRIM (' book '),')');
# 使用LTRIM函数删除字符串两边的空格,输入语句如下:
SELECT CONCAT( '(', TRIM(' book ') , ')');
SELECT '( book )',CONCAT('(', TRIM(' book '),')');
- 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)
# 使用SUBSTRING函数获取指定位置处的子字符串,输入语句如下:
## 从第五个开始获取,包括第五个,获取后边所有
SELECT SUBSTRING('breakfast',5) AS col1
## 从第五个开始获取,包括第五个,获取后边3个
SELECT SUBSTRING('breakfast',5,3) AS col2
## 从倒数第3个开始获取,获取后边所有
SELECT SUBSTRING('lunch', -3) AS col3
## 从倒数第5个开始获取,获取后边3个
SELECT SUBSTRING('lunch', -5, 3) AS col4
# 使用MID()函数获取指定位置处的子字符串,输入语句如下:
SELECT MID('breakfast',5) as col1
SELECT MID('breakfast',5,3) as col2
SELECT MID('lunch', -3) as col3
SELECT MID('lunch', -5, 3) as col4
2. 高级字符串操作
- 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
# 使用LEFT函数返回字符串中左边的字符,输入语句如下:
SELECT LEFT('football', 5);
# 使用RIGHT函数返回字符串中右边的字符,输入语句如下:
SELECT RIGHT('football', 4);
- 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
# 使用LPAD函数对字符串进行填充操作
# 返回字符串s1,其左边由字符串s2填补到len字符长度
# 假如s1的长度大于len,则返回值被缩短至len字符
# 输入语句如下:
SELECT LPAD('hello',4,'dd'), LPAD('hello',10,'dd');
# 使用RPAD函数对字符串进行填充操作,输入语句如下:
SELECT RPAD('hello',4,'?'), RPAD('hello',10,'?');
- 删除指定字符串的函数TRIM(s1 FROM s)
# 使用TRIM(s1 FROM s)函数删除字符串中两端指定的字符,输入语句如下:
SELECT TRIM('xy' FROM 'xyxboxyokxxyxy') ;
- 字符串逆序的函数REVERSE(s)
# 使用REVERSE函数反转字符串,输入语句如下:
SELECT REVERSE('abc');
- 返回指定位置的字符串的函数
# 使用ELT函数返回指定位置字符串,对应位置没有值,返回null
# 输入语句如下:
SELECT ELT(3,'1st','2nd','3rd'), ELT(3,'net','os');
- 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn)
# 使用FIELD函数返回指定字符串第一次出现的位置
# 存在返回位置,不存在返回0
# 输入语句如下:
SELECT FIELD('Hi', 'hihi', 'Hey', 'Hi', 'bas') as col1
SELECT FIELD('Hi', 'Hey', 'Lo', 'Hilo', 'foo') as col2
- 返回子串位置的函数FIND_IN_SET(s1,s2)
# 使用FIND_IN_SET()函数返回子字符串在字符串列表中的位置,输入语句如下:
SELECT FIND_IN_SET('Hi','hihi,Hey,Hi,bas');
3. 不常用字符操作
- 重复生成字符串的函数REPEAT(s,n)
# 使用REPEAT函数重复生成相同的字符串,输入语句如下:
SELECT REPEAT('MySQL', 3);
- 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)
# 使用SPACE函数生成由空格组成的字符串,输入语句如下:
SELECT CONCAT('(', SPACE(6), ')' );
# 使用REPLACE函数进行字符串替代操作,输入语句如下:
SELECT REPLACE('xxx.mysql.com', 'x', 'w');
- 比较字符串大小的函数STRCMP(s1,s2)
# 使用STRCMP函数比较字符串大小,
# 第一个小,返回-1,第一个大,返回1,相等返回0
# 输入语句如下:
SELECT STRCMP('txt', 'txt2'),STRCMP('txt2', 'txt'), STRCMP('txt', 'txt');
- 匹配子串开始位置的函数
# 使用LOCATE,POSITION,INSTR函数查找字符串中指定子字符串的开始位置,输入语句如下:
SELECT LOCATE('ball','football'),POSITION('ball'IN 'football'),INSTR ('football', 'ball');
- 选取字符串的函数MAKE_SET(x,s1,s2,…,sn)
# 使用MAKE_SET根据二进制位选取指定字符串,输入语句如下:
SELECT MAKE_SET(1,'a','b','c') as col1
# 1与4进行或操作之后的二进制值为0101,从右到左第1位和第3位为1
SELECT MAKE_SET(1 | 4,'hello','nice','world') as col2
# 如有有null,nullb不被计算在内
SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world') as col3
SELECT MAKE_SET(0,'a','b','c') as col4