SQL 存储中if、else判断、case...when..then..else.....end

1、

表结构:

SQL 存储中if、else判断、case...when..then..else.....end_第1张图片

----1.某用户的积分是n,数据库有一张积分等级表(字段有RatingPoints、Score);
----等级一 100
----等级二 200
----等级三 300
----查询该用户的等级?
declare @n int
declare @s int
set @n=400
if(@n<100)
begin
     set @s=@n
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 Score=@s

方法二(不使用数据库):

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


你可能感兴趣的:(数据库)