数据库判断取值

  如果要对数据库中某一列数据进行分类。一般有3中写法:

(比如现在有张商品表protable,表中有3个字段商品序号id,商品名称name,商品价格price。需求是:price大于10的商品名称后面要加上B的后缀,price小于1的后面加上S的后缀,位于价格中间的加上M的后缀)

1   union all方法

select

    *

from

(

   select name||'S' newname from protable where price < 1

   union all
   select name||'M' newname from protable where price >= 1 and price <= 10
   union all
   select name||'B' newname from protable where price > 10

)

2   decode方法 

select 
        decode(sign(price-10), 1, name||'B', 0, name||'M', decode(sign(price-1), 1, name||'M', 0, name||'M', -1, name||'S'))
    from 
        protable

3   case when语句

select
    case when price < 1
    then name||'S'
    when  price > 10

    then name||'B'
    else name||'M'

    end
from protable

你可能感兴趣的:(个人SQL心得)