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爲負數,截取整數的個數。