在使用MySQL時,有時候需要將逗號分隔的字符串轉化為數組。下面我們來介紹一種實現方法。
CREATE FUNCTION strToArray(str TEXT, delim CHAR(1)) RETURNS text[] DETERMINISTIC BEGIN DECLARE i INT DEFAULT 0; DECLARE arrLen INT DEFAULT 0; DECLARE arr TEXT; DECLARE tempStr TEXT; SET str = TRIM(str); SET arrLen = LENGTH(str) - LENGTH(REPLACE(str, delim, '')) + 1; IF arrLen = 1 THEN RETURN ARRAY[str]; END IF; SET arr = CONCAT('[', REPEAT('"",', arrLen-1), '""'); WHILE i< arrLen DO SET tempStr = TRIM(SUBSTRING_INDEX(str, delim, i+1)); SET arr = REPLACE(arr, CONCAT('"",', i+1, ',') , CONCAT('"',tempStr,'",')); SET i = i + 1; END WHILE; SET arr = TRIM(BOTH ',' FROM arr); SET arr = CONCAT('[', arr, ']'); RETURN JSON_EXTRACT(arr, CONCAT('$[', REPEAT(',0', arrLen-1), ']')); END
這段代碼定義了一個名為strToArray的函數。這個函數會返回一個字符串數組,輸入參數包括要轉換的字符串以及分隔符。
函數根據分隔符計算字符串中元素的數量,然后構造一個空數組。接著使用while循環,將每個元素添加到數組中。最后,使用JSON_EXTRACT函數,將數組轉化為字符串數組。
在使用時,只需要將需要轉換的字符串作為參數傳入該函數即可:
SELECT strToArray('apple,orange,banana', ',');
上面的代碼會返回一個包含字符串"apple","orange","banana"的數組。
這是一個比較簡單的方法,如果需要更高效或更靈活的解決方案,可以使用自定義的存儲過程或采用其他方法實現。
上一篇css背景指定大小
下一篇css背景引用本地圖片