Mysql查询字符串中某个字符串出现的个数

1.查单个字符出现的次数

因为单个字符只占有一个长度,所以可以使用repace之后的长度差得到

例如 : 获取@str里面"-"出现的次数

SET @str = '1-101-10102';
SELECT LENGTH(@str) - LENGTH(REPLACE(@str, '-', '')) AS `count_a`;

结果为 : 2

2.查多个字符出现的次数

因为多个字符占的长度不是1,所以使用replace之后,要除以原本的长度

例如 :  获取@str里面"101"出现的次数

SET @str = '1-101-10102';
SELECT LENGTH(@str) - LENGTH(REPLACE(@str, '101', '')) AS `count_hello`,-- 这里是不对的,没有除以长度
(LENGTH(@str) - LENGTH(REPLACE(@str, '101', '')))/LENGTH('101') AS `count_hello2` -- 正确,除以长度

结果 : 6  和 2.0000

现在有个问题,相除之后查出来了好多小数位,我们可以通过如下方式进行去掉。

SET @str = '1-101-10102';
SELECT LENGTH(@str) - LENGTH(REPLACE(@str, '-', '')) AS `count_a`, -- 2
LENGTH(@str) - LENGTH(REPLACE(@str, '101', '')) AS `count_hello`, -- 6
(LENGTH(@str) - LENGTH(REPLACE(@str, '101', '')))/LENGTH('101') AS `count_hello2`, -- 2.0000
TRUNCATE((LENGTH(@str) - LENGTH(REPLACE(@str, '101', '')))/LENGTH('101'),0) AS `count_hello3` -- 2

3.函数讲解

TRUNCATE函数:

SELECT TRUNCATE(3.1413338, 3)
结果为:3.141
  • 返回数字的截断值
  • 语法格式如下:TRUNCATE(X, D)
  • X表示要截取的数字,D表示要保留的小数点位数。如果D为正数,截取小数点位数,如果D为负数,截取整数的个数。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章