對于MySQL數據庫中的字符串,經常需要獲取其中某個字符或字符串出現的次數,這時候可以使用MySQL內置的函數來實現這個功能。
SELECT LENGTH(`str`) - LENGTH(REPLACE(`str`, 'a', '')) AS `count_a`, LENGTH(`str`) - LENGTH(REPLACE(`str`, 'hello', '')) AS `count_hello` FROM `table` WHERE `id` = 1;
以上代碼中,將查詢出`table`表中`id`為1的記錄中字符串`str`中字符`'a'`和字符串`'hello'`分別出現的次數。
其中`REPLACE()`函數用來將字符串`str`中所有字符`'a'`或字符串`'hello'`替換為空,再計算替換前后字符串長度的差值即可得到對應字符或字符串出現的次數。
需要注意的是,如果不關心字符或字符串是否與其他字符或字符串重疊,則可以使用以下代碼來計算出現次數:
SELECT (LENGTH(`str`) - LENGTH(REPLACE(`str`, 'a', ''))) / LENGTH('a') AS `count_a`, (LENGTH(`str`) - LENGTH(REPLACE(`str`, 'hello', ''))) / LENGTH('hello') AS `count_hello` FROM `table` WHERE `id` = 1;
這里除以了字符或字符串自身的長度,而非替換后字符串長度的差值,可以避免重疊的情況導致計算錯誤。