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

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

將數組傳遞給MySQL存儲例程

將數組傳遞給MySQL存儲例程

湖上湖 2019-10-08 15:57:27
我需要將字符串數組作為參數傳遞給MySQL存儲例程。該數組可能很長,其元素數量不是固定的。然后,我想將字符串值放入具有一列的內存表中,以便可以處理數據。我不知道這是否可以在MySQL中完成。也許需要骯臟的解決方法。例如,我有字符串值:Banana, Apple, Orange現在,我想從MySQL Fruits表中獲取有關這些水果的數據。偽代碼:create function GetFruits(Array fruitArray)    declare @temp table as      fruitName varchar(100)   end   @temp = convert fruitArray to table   select * from Fruits where Name in (select fruitName from @temp)endMicrosoft SQL Server允許您使用TEXT數據類型并將數組作為XML字符串提交,從而快速創建內存表。但是,我認為該技術不可能在MySQL中實現。任何有關如何執行此操作的幫助將不勝感激!
查看完整描述

4 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

您可以在列表中傳遞字符串,并使用準備好的語句來運行查詢,例如-


DELIMITER $$


CREATE PROCEDURE GetFruits(IN fruitArray VARCHAR(255))

BEGIN


  SET @sql = CONCAT('SELECT * FROM Fruits WHERE Name IN (', fruitArray, ')');

  PREPARE stmt FROM @sql;

  EXECUTE stmt;

  DEALLOCATE PREPARE stmt;


END

$$


DELIMITER ;

如何使用:


SET @fruitArray = '\'apple\',\'banana\'';

CALL GetFruits(@fruitArray);


查看完整回答
反對 回復 2019-10-08
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

只需像這樣使用FIND_IN_SET:


mysql> SELECT FIND_IN_SET('b','a,b,c,d');

        -> 2

因此,您可以執行以下操作:


select * from Fruits where FIND_IN_SET(fruit, fruitArray) > 0


查看完整回答
反對 回復 2019-10-08
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

這有助于我做IN條件,希望這對您有幫助。


CREATE  PROCEDURE `test`(IN Array_String VARCHAR(100))

BEGIN

    SELECT * FROM Table_Name

    WHERE FIND_IN_SET(field_name_to_search, Array_String);


END//;

致電:


 call test('3,2,1');


查看完整回答
反對 回復 2019-10-08
  • 4 回答
  • 0 關注
  • 690 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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