相當于explode()在MySQL中使用字符串在MySQL中,我希望能夠'31 - 7'在另一個值=時搜索'7 - 31'。我會用什么語法來分解MySQL中的字符串?在PHP中,我可能會使用explode(' - ',$string)它們并將它們組合在一起。有沒有辦法在MySQL中這樣做?背景:我正在使用體育比分,并希望嘗試得分相同的比賽(以及同一日期) - 每支球隊的列出得分與對手的數據庫記錄相比是倒退的。理想的MySQL調用是:Where opponent1.date = opponent2.date AND opponent1.score = opponent2.score(opponent2.score需要opponent1.score倒退)。
3 回答

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
MYSQL沒有explode()
內置的類似功能。但是你可以輕松地向你的數據庫添加類似的功能,然后從php查詢中使用它。該功能將如下所示:
CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT)RETURNS VARCHAR(255)RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos), LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1), delim, '');
用法:
SELECT SPLIT_STRING('apple, pear, melon', ',', 1)
上面的例子將返回apple
。我認為在MySQL中返回數組是不可能的,因此您必須指定明確返回的事件pos
。如果您成功使用它,請告訴我。

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
您可以這種方式使用存儲過程..
DELIMITER |CREATE PROCEDURE explode( pDelim VARCHAR(32), pStr TEXT) BEGIN DROP TABLE IF EXISTS temp_explode; CREATE TEMPORARY TABLE temp_explode (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL, word VARCHAR(40)); SET @sql := CONCAT('INSERT INTO temp_explode (word) VALUES (', REPLACE(QUOTE(pStr), pDelim, '\'), (\''), ')'); PREPARE myStmt FROM @sql; EXECUTE myStmt; END | DELIMITER ;
示例電話:
SET @str = "The quick brown fox jumped over the lazy dog"; SET @delim = " "; CALL explode(@delim,@str);SELECT id,word FROM temp_explode;
添加回答
舉報
0/150
提交
取消