MySQL獲取二維數(shù)組字符串的最后一個(gè)值的實(shí)現(xiàn)代碼
要分離字符串:[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8","8001","8001005"]],獲取里面各數(shù)組里面的最后一個(gè)值,即1007012,5005,6002005,7003和8001005
1,內(nèi)容替換
先把內(nèi)容替換了,把雙引號(hào)和替換為空的,再把中間中括號(hào)替換為指定字符
替換后的:
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,寫(xiě)函數(shù)處理
利用LOCATE找到位置,再用SUBSTRING分離字符串,再用SUBSTRING_INDEX獲取到數(shù)組的最后一個(gè)值。
分離函數(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);
-- 再分割后的子字符串?dāng)?shù)組最后一個(gè)值
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);
-- 找出最后一個(gè)值
SET lastIndexStr = SUBSTRING_INDEX(splitStr, ',', -1);
-- 將子字符串最后一個(gè)值添加到結(jié)果中
SET outputResult = CONCAT(outputResult, lastIndexStr, ',');
-- 更新索引
SET currentPos = delimiterPos + delimiterLength;
ELSE
-- 如果沒(méi)有找到分割字符,則將剩余的字符串添加到結(jié)果中
SET splitStr = SUBSTRING(inputString, currentPos);
-- 找出最后一個(gè)值
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ù)的就目標(biāo)達(dá)成了,就可以進(jìn)行下一步操作了。
總結(jié)
分離字符串,必須得用到LOCATE(找到位置)和SUBSTRING(分離字符串),有考慮直接用replace進(jìn)行替換,但是這個(gè)可能會(huì)出現(xiàn)誤差,導(dǎo)致問(wèn)題,就不推薦使用。 對(duì)于一位數(shù)組的位置,如果是固定長(zhǎng)度的就還好指定位置,不然只有第一個(gè)和最后一個(gè)位置是確定的。
以上就是MySQL獲取二維數(shù)組字符串的最后一個(gè)值的實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容,更多關(guān)于MySQL獲取字符串最后一個(gè)值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql注入之長(zhǎng)字符截?cái)?orderby注入,HTTP分割注入,limit注入方式
這篇文章主要介紹了mysql注入之長(zhǎng)字符截?cái)?orderby注入,HTTP分割注入,limit注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
解決mysql不能插入中文Incorrect string value
首先我的配置文件的設(shè)置的默認(rèn)字符集是utf8即2009-05-05
解決MySQL報(bào)錯(cuò):You?can‘t?specify?target?table?‘region‘?for?
這篇文章主要給大家介紹了關(guān)于MySQL報(bào)錯(cuò):You?can‘t?specify?target?table?‘region‘?for?update?in?FROM?clause的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
關(guān)于Mysql搭建主從復(fù)制功能的步驟實(shí)現(xiàn)
這篇文章主要介紹了關(guān)于Mysql搭建主從復(fù)制功能的步驟實(shí)現(xiàn),在實(shí)際的生產(chǎn)中,為了解決Mysql的單點(diǎn)故障已經(jīng)提高M(jìn)ySQL的整體服務(wù)性能,一般都會(huì)采用主從復(fù)制,需要的朋友可以參考下2023-05-05

