在sql表达式中:
if表达式:
if(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
select *,if(sva=1,"男","女") as ssva from taname where sva != ""
当sva为1时返回男,否则返回女。
ifnull表达式:
ifnull(expr1,expr2)
当expr1<>null,返回expr1,否则返回expr2,可嵌套:
ifnull(ifnull(expr1,ifnull(...)),ifnull(...))
case when表达式:
两种格式:
简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。
完整的简单case when
CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END
当input_expression = when_expression时,返回result_expression
如
select (case aix when ‘s400‘ then ‘hp‘ when ‘a10‘ then ‘dell‘ else ‘any‘ end) machineName from tablename
input_expression一般为表字段,或者 其他有效的sql表达式(这句没太明白)。
when_expression为与input_expression数据类型相同,或者可隐性转换。也就是说这里是不能是某种boolean表达式(字符串比较、表达式计算等),除非input_expression是bool型的。
完整的搜索case when
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END
当boolean_expression=true,返回result_expression.
如
select (case when aix = ‘s400‘ then ‘hp‘ when aix = ‘a10‘ then ‘dell‘ else ‘any‘ end) machineName from tablename
可以理解为简单case when省略了case 后的true。两者的执行过程或不同,还有待研究。
时间: 2024-10-14 04:09:29