亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

largeQ 2019-07-27 10:13:31
相當于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。如果您成功使用它,請告訴我。


查看完整回答
反對 回復 2019-07-27
?
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;


查看完整回答
反對 回復 2019-07-27
  • 3 回答
  • 0 關注
  • 3265 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號