相当于explode()在MySQL中使用字符串

相当于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倒退)。


largeQ
浏览 3228回答 3
3回答

拉莫斯之舞

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

您可以这种方式使用存储过程..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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL