色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 逗號字符串轉數組

林雅南2年前9瀏覽0評論

在使用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"的數組。

這是一個比較簡單的方法,如果需要更高效或更靈活的解決方案,可以使用自定義的存儲過程或采用其他方法實現。