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爲負數,截取整數的個數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章