相当于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
提交
取消