mysql 存儲過程 select in( param)語句 傳參問題,以及 經常使用方法 的使用

一、存儲過程: 由於最近的項目須要,須要寫一些存儲過程,這裏本身也簡單的記錄一下bash

DROP PROCEDURE IF EXISTS `xxxxx`; #刪除同名的存儲過程,否則建立的時候會報錯
CREATE PROCEDURE `xxxxx`(IN `names` varchar(21845)) #這裏定義本身須要的輸入輸出參數
    begin:

           insert   into    student  (name,sex, address,email )

           select  name, sex, address, email  from   people  where   name in ( names )

     end
複製代碼

存儲過程 中 in()  語句 傳參 爲 names =  1,2,3,4   以逗號隔開的 字符串參數時  不能直接傳去 names函數

處理方法:    用 find_in_set (name , names)   代替    name  in (names)spa

須要注意的是:這裏的find_in_set 是精確匹配,若是須要模糊匹配的仍是須要 like .code

二、Case具備兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數cdn

CASE sex 
             WHEN '1' THEN '男' 
             WHEN '2' THEN '女' 
    ELSE '其餘' END 
複製代碼

--Case搜索函數blog

CASE WHEN sex = '1' THEN '男' 
             WHEN sex = '2' THEN '女' 
    ELSE '其餘' END 
複製代碼

這兩種方式,能夠實現相同的功能。簡單Case函數的寫法相對比較簡潔,可是和Case搜索函數相比,功能方面會有些限制,好比寫判斷式。 還有一個須要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。字符串

三、ifnull函數,若是返回結果爲null,那麼就返回指定值string

select  ifnull((select null * 10),'結果是null')

複製代碼

相關文章
相關標籤/搜索