sql case when CASE WHEN

发布时间:2020-06-09 12:12:44   来源:网络 关键词:sql case when

sql case when


本文为您介绍如何使用实时计算条件函数CASE WHEN。

语法

CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END            

入参

参数 数据类型
a BOOLEAN
b BOOLEAN
c BOOLEAN
d BOOLEAN
e BOOLEAN

功能描述

如果a为TRUE,则返回b。如果a为FALSE,c为TRUE,则返回d。如果a、c都为FALSE,则返回e。

示例

说明 CASE WHEN返回常量字符串的时候,会在字符串后面补全空格。如下面的例子,当满足else条件的时候返回值是ios,后面会多几个空格。
case when device_type = 'android' then 'android' else 'ios'end as os
两种解决方法:
  • 利用TRIM函数去除空格。针对这个例子,在用到os字段的地方,改用TRIM(os)。
  • 利用CAST将常量字符串转为VARCHAR类型。
  • 测试数据
    device_type(VARCHAR)
    android
    ios
    win
  • 测试语句一(解决方法1:利用TRIM函数)
    SELECT    trim(os), --这里加了trim。   CHAR_LENGTH(trim(os)) --这里加了trim。from(   SELECT     case when device_type = 'android'     then 'android'     else 'ios' end as os FROM T1);
    测试语句二(解决方法2:利用CAST函数)
    SELECT os, CHAR_LENGTH(os) from(SELECT  case when device_type = 'android' then cast('android' as varchar) --这里加了cast。  else cast('ios' as varchar)  --这里加了cast。 end as os FROM T1);
  • 测试结果
    os(VARCHAR) length(INT)
    android 7
    ios 3
    ios 3

cdn可以抵御ddos吗
ddos攻击
猜你喜欢
上一篇:同步测试 同步检测 下一篇:最后一页