MySQL獲取二維數(shù)組字符串的最后一個值的實現(xiàn)代碼
要分離字符串:[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8","8001","8001005"]],獲取里面各數(shù)組里面的最后一個值,即1007012,5005,6002005,7003和8001005
1,內(nèi)容替換
先把內(nèi)容替換了,把雙引號和替換為空的,再把中間中括號替換為指定字符
替換后的:
SELECT REPLACE ( REPLACE ( REPLACE (REPLACE ( s.gdbq, '],[', '@' ), '[', '' ), ']', '' ), '"', '' ) replace_gdbq FROM ( SELECT '[["1","1007","1007012"],["5","5005"], ["6","6002","6002005"],["7","7003"],["8","8001","8001005"]]' AS gdbq ) AS s
2,寫函數(shù)處理
利用LOCATE找到位置,再用SUBSTRING分離字符串,再用SUBSTRING_INDEX獲取到數(shù)組的最后一個值。
分離函數(shù):
DROP FUNCTION IF EXISTS func_split_arr_last_index;
DELIMITER //
CREATE FUNCTION func_split_arr_last_index(inputString VARCHAR(1024), delimiterChar VARCHAR(10))
RETURNS VARCHAR(1024)
BEGIN
-- 分割后的子字符串
DECLARE splitStr VARCHAR(255);
-- 再分割后的子字符串數(shù)組最后一個值
DECLARE lastIndexStr VARCHAR(255);
-- 分割后的結(jié)果
DECLARE outputResult VARCHAR(255) DEFAULT '';
-- 分割后的子字符串的位置
DECLARE currentPos INT DEFAULT 1;
-- 分割字符的位置
DECLARE delimiterPos INT;
-- 分割字符的大小
DECLARE delimiterLength INT;
SET delimiterLength = LENGTH(delimiterChar);
-- 循環(huán)查找分割字符
WHILE currentPos <= LENGTH(inputString) DO
-- 查找分割字符的位置
SET delimiterPos = LOCATE(delimiterChar, inputString, currentPos);
-- 如果找到分割字符,則截取子字符串
IF delimiterPos > 0 THEN
SET splitStr = SUBSTRING(inputString, currentPos, delimiterPos - currentPos);
-- 找出最后一個值
SET lastIndexStr = SUBSTRING_INDEX(splitStr, ',', -1);
-- 將子字符串最后一個值添加到結(jié)果中
SET outputResult = CONCAT(outputResult, lastIndexStr, ',');
-- 更新索引
SET currentPos = delimiterPos + delimiterLength;
ELSE
-- 如果沒有找到分割字符,則將剩余的字符串添加到結(jié)果中
SET splitStr = SUBSTRING(inputString, currentPos);
-- 找出最后一個值
SET lastIndexStr = SUBSTRING_INDEX(splitStr, ',', -1);
SET outputResult = CONCAT(outputResult, lastIndexStr);
-- 退出循環(huán)
SET currentPos = LENGTH(inputString) + 1;
END IF;
END WHILE;
-- 返回分割后的結(jié)果
RETURN outputResult;
END //
DELIMITER ; 使用:
SELECT func_split_arr_last_index(replace_gdbq, '@') FROM ( SELECT REPLACE ( REPLACE ( REPLACE (REPLACE ( s.gdbq, '], [', '@' ),'[', '' ), ']', '' ), '"', '' ) replace_gdbq FROM ( SELECT '[["1","1007","1007012"],["5","5005"], ["6","6002","6002005"],["7","7003"],["8","8001","8001005"]]' AS gdbq ) AS s ) AS t;

這樣分離數(shù)據(jù)的就目標達成了,就可以進行下一步操作了。
總結(jié)
分離字符串,必須得用到LOCATE(找到位置)和SUBSTRING(分離字符串),有考慮直接用replace進行替換,但是這個可能會出現(xiàn)誤差,導致問題,就不推薦使用。 對于一位數(shù)組的位置,如果是固定長度的就還好指定位置,不然只有第一個和最后一個位置是確定的。
以上就是MySQL獲取二維數(shù)組字符串的最后一個值的實現(xiàn)代碼的詳細內(nèi)容,更多關于MySQL獲取字符串最后一個值的資料請關注腳本之家其它相關文章!
相關文章
淺談為什么MySQL不建議delete刪除數(shù)據(jù)
這篇文章主要介紹了淺談為什么MySQL不建議delete刪除數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
mysql 5.7.17 winx64免安裝版配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql 5.7.17 winx64免安裝版配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
MySQL中Binary Log二進制日志文件的基本操作命令小結(jié)
這篇文章主要介紹了MySQL中Binary Log二進制日志文件的基本操作小結(jié),包括利用二進制日志恢復數(shù)據(jù)的方法,需要的朋友可以參考下2015-12-12
MySQL?LOAD?DATA與INSERT導入大批量數(shù)據(jù)示例代碼
MySQL LOAD DATA是一個用于快速從文件中批量導入數(shù)據(jù)到表中的命令,這篇文章主要介紹了MySQL?LOAD?DATA與INSERT導入大批量數(shù)據(jù)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-09-09
MySQL數(shù)據(jù)庫操作DML?插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù)
這篇文章主要介紹了MySQL數(shù)據(jù)庫操作DML插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù),DML是指數(shù)據(jù)操作語言,英文全稱是Data?Manipulation?Language,用來對數(shù)據(jù)庫中表的數(shù)據(jù)記錄進行更新2022-07-07
windows 64位下MySQL 8.0.15安裝教程圖文詳解
本文通過圖文并茂的形式給大家介紹了MySQL 8.0.15安裝教程(windows 64位),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
MySQL連接時出現(xiàn)2003錯誤的實現(xiàn)
本文主要介紹了MySQL連接時出現(xiàn)2003錯誤的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

