天天看點

SQL 存儲中if、else判斷、case...when..then..else.....end

1、

表結構:

SQL 存儲中if、else判斷、case...when..then..else.....end
----1.某使用者的積分是n,資料庫有一張積分等級表(字段有RatingPoints、Score);
----等級一 100
----等級二 200
----等級三 300
----查詢該使用者的等級?
declare @n int
declare @s int
set @n=400
if(@n<100)
begin
     set @[email protected]
end
else if(@n>=100 and @n<200)
begin
     set @s=100
end
else if(@n>=200 and @n<300)
begin
    set @s=200
end
else
begin
    set @s=300
end

select * from dbo.UserScores where [email protected]
           

方法二(不使用資料庫):

declare @fen int
set @fen=500
select dj=case when @fen>300 then 3
          when @fen>200 then 2
          when @fen>100  then 1
          else 0 end 
           

2、case  ...  when  ...  then ....

                 when  ...  then ....

       else  ....   end  顯示的列名  

--簡單Case函數
CASE sex
         WHEN '1' THEN '男'
         WHEN '2' THEN '女'
ELSE '其他' END
--Case搜尋函數
CASE WHEN sex = '1' THEN '男'
         WHEN sex = '2' THEN '女'
ELSE '其他' END
           

如果是select case..when...then...else ..end  as '顯示列名稱' ,後面最好加一個group   by

相關文檔:

http://www.cnblogs.com/prefect/p/5746624.html

case表達式兩種寫法:

----case表達式1
 select ID,TestType,
       CASE  TestType WHEN '主體結構'  then '1'
              WHEN '鋼結構'  then '2'
              WHEN '建築幕牆'  then '3'
       ELSE '0'
        end as '類型'
       from LbtTestTypes
       
 ----case表達式2
  select ID,TestType,
       CASE   WHEN TestType='主體結構'  then '1'
              WHEN TestType='鋼結構'  then '2'
              WHEN TestType='建築幕牆'  then '3'
       ELSE '0'
        end as '類型'
       from LbtTestTypes