一、存儲過程: 由於最近的項目須要,須要寫一些存儲過程,這裏本身也簡單的記錄一下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')
複製代碼