使用SQL统计某个字符串中出现子串的次数
本文方法来自:牛客网:查找字符串’10,A,B’ 中逗号’,’出现的次数cnt
题目:查找字符串’10,A,B’ 中逗号’,’出现的次数cnt。
思路:先用replace函数将原串中出现的子串用空串替换,再用原串长度减去替换后字符串的长度,最后除以子串的长度。
1 | SELECT ( |
(原串10,A,B
长度6-替换串10AB
长度4) / 子串,
长度1 = 子串出现次数2
扩展1
题目:查找字符串’10,,A,,B’ 中逗号’,,’出现的次数cnt。
1 | SELECT ( |
因为原串中的子串使用空串代替的,所以当子串的长度超过1时,还需要除去子串本身的长度。
(原串10,,A,,B
长度8-替换串10AB
长度4) / 子串,,
长度2 = 子串出现次数2
扩展2
题目:查找字符串’我。。喜欢。。你’ 中句号’。。’出现的次数cnt。
1 | SELECT ( |
如果考虑到中文的话,其实应该用char_length()函数,统计的是字符长度。