MySQL儲存過程中如何使用where in

2021-10-01 07:16:26 字數 760 閱讀 5064

在mysql儲存過程中,有時候我們需要傳遞乙個字串資料並希望在過程中通過where in 查詢出多條記錄。現通過一簡單的例項來說明下:

對於乙個查詢商品的儲存過程如:

proc_get_goods_info(in goodsids varchar(100));
現在我們希望通過過程查詢出goodsid為1,2,3的商品資訊,如果在過程中使用

select * from goods_info where goods_id in (goodsids);
呼叫過程

call proc_get_goods_info("1,2,3");
我們會發現結果輸出來的資料並不符合預期要求,也就是說這裡的where in無效。其實想想我們應該也能清楚,where something in ('1,2,3')where something in(1,2,3)是有區別的,而且有很大的區別。

那麼在過程中如果傳遞的某一引數形如a,b,c,則可以使用find_in_set(str, strlist)函式,故而上面語句可以改為:

select * from goods_info where find_in_set(goods_id, goodsids);
此時查詢出的資料將符合預期要求。。。

mysql儲存過程中變數的使用

在mysql儲存過程中,宣告乙個變數可以使用declare vi num 變數名 int 資料型別 的方式。還可以直接使用 變數名的方式,直接使用乙個變數。請看以下儲存過程 drop procedure if exists pro2 create procedure pro2 begin decla...

儲存過程中,if語句使用

if語句 判斷使用者輸入的數字 set serveroutput on 1.提示資訊 2.接收鍵盤輸入 num 是乙個位址值 sql優化 num繫結變數 盡量使用繫結變數 select from emp where deptno 10 執行計畫 select from emp where deptn...

Oracle儲存過程中如何使用游標

本儲存過程的功能 把test tbl2中與test tbl1中id相同但salary不同的記錄中的salary的值更新為test tbl1中的salary的值 建立儲存過程 create or replace procedure p update test tbl2 is 定義游標 cursor c...