1. 程式人生 > 實用技巧 >T-SQL CASE WHEN 使用小例

T-SQL CASE WHEN 使用小例

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

select  
case 
    when CONVERT(int, price)>=10 and CONVERT(int, price)<=20 then '10 to 20'
    when price is null then 'Unknown'
    else price
end as myPrice
from Book

或者

select  'myPrice'=
case
when CONVERT(int, price)>=10 and CONVERT(int, price)<=30 then '10 to 20' when price is null then 'Unknown' else price end from Book

附:

CASE和IF的區別:
在高階語言中,CASE的可以用IF來替代,但是在SQL中不行。
CASE是SQL標準定義的,IF是資料庫系統的擴充套件。
CASE可以用於SQL語句和SQL儲存過程、觸發器,IF只能用於儲存過程和觸發器。
在SQL過程和觸發器中,用IF替代CASE代價都相當的高,相當的麻煩,難以實現。

在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.