MySQL 字符串函数
一、子串相关
1.INSTR
判断某个字符串是否包含某个特定的字符串:
SELECT INSTR(target, template)
如果这个字串出现在目标字符串中,则返回该字串第一个字符在目标字符串中的位置:
SELECT INSTR('annie', 'i')
-- 结果:3
SELECT INSTR('annie', 'k')
-- 结果:0
2. SUBSTR
获取目标字符串从指定下标位置开始指定长度的子串,例如:
SELECT SUBSTR('annie', 0, 3) as sub
-- result: 'ann'
另外,也可以通过 from
选项指定开始位置,得到从指定开始位置到字符串末尾的子串,例如:
SELECT SUBSTR('annie' from -2)
得到的结果为 'ie'
,为最后两位字符
3. SUBSTRING_INDEX
获取在字符串中,第 n 个匹配字串之前或者之后的整段字符串,其中:
- 当 n > 0 n>0 n>0 时,则取从前往后第 n 个匹配项之前的所有部分
- 当 n < 0 n<0 n<0 时,则取从后往前第 n 个匹配项之后的所有部分
例如:
SELECT SUBSTRING_INDEX('jason stands by annie', ' ', 1)
-- 返回第一个空格前的字符串
-- 结果: jason
SELECT SUBSTRING_INDEX('jason stands by annie', ' ', -1)
-- 返回最后一个空格后的所有字符串
-- return 'annie'
SELECT SUBSTRING_INDEX(substring_index('jason stands by annie', ' annie', 1), 'jason ', -1)
-- 返回 'annie' 之前,'jason' 之后的字符串,
-- return 'stands by'
4. LENGTH
返回字符串的长度,例如:
SELECT length('annie')
-- 5
二、字符串拼接
1. CONCAT
sql
中的字符串拼接可以通过 CONCAT
方法实现,可以拼接
2
2
2 个以上的字符串:
SELECT CONCAT('json', 'and', 'annie')
-- 结果: json and annie
2. GROUP_CONCAT
如果需要在进行 GROUP BY
操作的时候,把某个字符类型的字段的一组值聚合起来,指定相应的分隔字符,就可以通过 GROUP_CONCAT
这个函数,在分组聚合过程中使用,例如希望把查出来的地理位置用 '->'
连接起来,得到某位用户的轨迹,则可以:
SELECT
userName,
GROUP_CONCAT(geoPos SEPARATOR BY '->') as trace
FROM userGeoPosInfo
GROUP BY userName