一:业务场景
一次在用union all 查询多个表中需要对多个表的数据汇总,同时还要区份各个表的数据来源,就用到下面我们说的那两个方法
一:先说orcale的翻译方法
orcale中的decode()函数给我们提供了很方便的翻译
select DECODE(字段名称a,val,翻译1,翻译2) as test FROM 表名称 ;解释:如果字段a的值是val,那么翻译后的值是翻译1,否则值为翻译2
select DECODE(字段名称a,val1,翻译1,val2,翻译2,......) as test FROM 表名称; 解释:如果字段a的值是val1,那么翻译后的值是1,如果字段a的值是val2,那么饭以后的值是2,一次类推
二:MySQL的翻译方法
由于mysql没有decode()函数,因此我们只能自己手动写
select
case
when 字段a = val1 then 翻译1
when 字段a = val2 then 翻译2
when 字段a = val3 then 翻译3
end as test
from 表名称
解释:如果字段a的值是val1,那么翻译后的值是翻译1,一次类推
三:给查询虚拟字段设置默认值
使用场景: 查询时候需要设置一个虚拟字段来标识状态,同时还要给这个状态设置一个虚拟值
select "D" as 虚拟字段 from 表名称