存儲過程里面的CASE,WHEN,THEN的用法


方法1:CASE
WHEN 條件1 THEN 結果1
WHEN 條件2 THEN 結果2
...
WHEN 條件i THEN 結果i
ELSE 默認結果END方法2:
CASE 字段/變量
WHEN 值1 THEN 結果1
WHEN 值2 THEN 結果1
...
WHEN 值i THEN 結果1
ELSE 默認結果
END
用法:比如查詢:SELECT 字段1,(CASE ... END) FROM 表WHERE 字段1 = (CASE ... END)

SQL中的case when使用小例

用一個SQL語句完成以下查詢,從book表中查詢出price,當price在10到20之間(包含10和20)時返回“10 to 20”,當price為空返回“Unknown”,其他情況返回原price的值(群碩招聘)

  1. select    
  2. case   
  3.     when CONVERT(int, price)>=10 and CONVERT(int, price)<=20 then '10 to 20'  
  4.     when price is null then 'Unknown'  
  5.     else price  
  6. end as myPrice  
  7. from Book

或:

      

    1. select  'myPrice'=  
    2. case   
    3.     when CONVERT(int, price)>=10 and CONVERT(int, price)<=30 then '10 to 20'  
    4.     when price is null then 'Unknown'  
    5.     else price  
    6. end   
    7. from Book 

CASE和IF的區別: 
在高級語言中,CASE的可以用IF來替代,但是在SQL中不行。
CASE是SQL標准定義的,IF是數據庫系統的擴展。
CASE可以用於SQL語句和SQL存儲過程、觸發器,IF只能用於存儲過程和觸發器。

在SQL SERVER中,cast和convert函數都可用於類型轉換,其功能是相同的,只是語法不同.cast一般更容易使用,convert的優點是可以格式化日期和數值.
select CAST('123.4' as int)
select CONVERT(int, '123.4')
-- Conversion failed when converting the varchar value '123.4' to data type int.

 

https://zhidao.baidu.com/question/538305979.html

http://www.cnblogs.com/szhx/archive/2013/05/07/3219332.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM