MySQL 存儲(chǔ)過(guò)程傳參數(shù)實(shí)現(xiàn)where id in(1,2,3,...)示例
更新時(shí)間:2013年10月30日 16:46:25 作者:
一個(gè)MySQL 存儲(chǔ)過(guò)程傳參數(shù)的問(wèn)題想實(shí)現(xiàn)例如篩選條件為:where id in(1,2,3,...),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
正常寫(xiě)法:
select * from table_name t where t.field1 in (1,2,3,4,...);
當(dāng)在寫(xiě)存儲(chǔ)過(guò)程in里面的列表用個(gè)傳入?yún)?shù)代入的時(shí)候,就需要用到如下方式:
主要用到find_in_set函數(shù)
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
當(dāng)然還可以比較笨實(shí)的方法,就是組裝字符串,然后執(zhí)行:
DROP PROCEDURE IF EXISTS photography.Proc_Test;
CREATE PROCEDURE photography.`Proc_Test`(param1 varchar(1000))
BEGIN
set @id = param1;
set @sel = 'select * from access_record t where t.ID in (';
set @sel_2 = ')';
set @sentence = concat(@sel,@id,@sel_2); -- 連接字符串生成要執(zhí)行的SQL語(yǔ)句
prepare stmt from @sentence; -- 預(yù)編釋一下。 “stmt”預(yù)編釋變量的名稱,
execute stmt; -- 執(zhí)行SQL語(yǔ)句
deallocate prepare stmt; -- 釋放資源
END;
復(fù)制代碼 代碼如下:
select * from table_name t where t.field1 in (1,2,3,4,...);
當(dāng)在寫(xiě)存儲(chǔ)過(guò)程in里面的列表用個(gè)傳入?yún)?shù)代入的時(shí)候,就需要用到如下方式:
主要用到find_in_set函數(shù)
復(fù)制代碼 代碼如下:
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
當(dāng)然還可以比較笨實(shí)的方法,就是組裝字符串,然后執(zhí)行:
復(fù)制代碼 代碼如下:
DROP PROCEDURE IF EXISTS photography.Proc_Test;
CREATE PROCEDURE photography.`Proc_Test`(param1 varchar(1000))
BEGIN
set @id = param1;
set @sel = 'select * from access_record t where t.ID in (';
set @sel_2 = ')';
set @sentence = concat(@sel,@id,@sel_2); -- 連接字符串生成要執(zhí)行的SQL語(yǔ)句
prepare stmt from @sentence; -- 預(yù)編釋一下。 “stmt”預(yù)編釋變量的名稱,
execute stmt; -- 執(zhí)行SQL語(yǔ)句
deallocate prepare stmt; -- 釋放資源
END;
相關(guān)文章
解決MySQL8.0 輸入無(wú)誤仍然提示Access denied問(wèn)題
這篇文章主要介紹了解決MySQL8.0 輸入無(wú)誤仍然提示Access denied問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05MySQL關(guān)于sql_mode解析與設(shè)置講解
今天小編就為大家分享一篇關(guān)于MySQL關(guān)于sql_mode解析與設(shè)置講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03mysql數(shù)據(jù)庫(kù)在表中添加數(shù)據(jù)三種操作方式
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)在表中添加數(shù)據(jù)三種方式,首先創(chuàng)建數(shù)據(jù)庫(kù)和表,創(chuàng)建完成后就可以進(jìn)行添加數(shù)據(jù)的操作了,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08將MySQL數(shù)據(jù)庫(kù)移植為PostgreSQL
PostgreSQL 作為功能最強(qiáng)勁的開(kāi)源 OO 數(shù)據(jù)庫(kù),仿佛一直不為國(guó)內(nèi)用戶所熟識(shí)。而我個(gè)人也僅是因?yàn)楣ぷ鞯木壒式佑|到這款超經(jīng)典的數(shù)據(jù)庫(kù),并深為之折服。2009-07-07MySQL性能參數(shù)詳解之Skip-External-Locking參數(shù)介紹
MySQL的配置文件my.cnf中默認(rèn)存在一行skip-external-locking的參數(shù),即跳過(guò)外部鎖定。根據(jù)MySQL開(kāi)發(fā)網(wǎng)站的官方解釋?zhuān)珽xternal-locking用于多進(jìn)程條件下為MyISAM數(shù)據(jù)表進(jìn)行鎖定2016-05-05Mysql插入數(shù)據(jù)方式(insert into 、replace into解析)
這篇文章主要介紹了Mysql插入數(shù)據(jù)方式(insert into 、replace into解析),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01MySQL中的LOCATE和POSITION函數(shù)使用方法
不常用:MySQL中的LOCATE和POSITION函數(shù)2010-02-02