我需要帮助在 SQL db2-400 中定义 case 语句
I need help defining a case statement in SQL db2-400
我正在使用 SQL、IBM Data Studio、db2-400。我需要帮助编写一个 case 语句来查找字段的长度,如果不等于 14,则 returns 为空白,我尝试了很多方法都没有成功,下面是我最近的尝试。
CASE
WHEN LENGTH(TRIM(FFIUPCN) <> '14'
THEN ''
ELSE
FFIUPCN
END AS "UPC (if applicable)"
我得到的错误是令牌“<>”无效。
主要问题是您缺少 )
CASE
WHEN LENGTH(TRIM(FFIUPCN)) <> 14
THEN ''
ELSE
FFIUPCN
END AS "UPC (if applicable)"
但您不应该将 length()
返回的数字与字符串 '14'
进行比较。但是 Db2 正在隐式转换它。
对于多个条件,您可以嵌套 case 语句
Select
case when FIUPCN+FFIUPCN2 = 0
then case when FIUPCN >= value then FIUPCN + 1
else FIUPCN + 2 end
else
case when FIUPCN >= value
then case when FIUPCN <> ''
then FIUPCN + 3
else prvca1 end
else
case
when FIUPCN >= FIUPCN2 and FIUPCN3 <> 0 then FIUPCN + 4
when FIUPCN >= FIUPCNX and FIUPCNY <> 0 then FIUPCN + 5
else prvca1 end
end
end
from table
我正在使用 SQL、IBM Data Studio、db2-400。我需要帮助编写一个 case 语句来查找字段的长度,如果不等于 14,则 returns 为空白,我尝试了很多方法都没有成功,下面是我最近的尝试。
CASE
WHEN LENGTH(TRIM(FFIUPCN) <> '14'
THEN ''
ELSE
FFIUPCN
END AS "UPC (if applicable)"
我得到的错误是令牌“<>”无效。
主要问题是您缺少 )
CASE
WHEN LENGTH(TRIM(FFIUPCN)) <> 14
THEN ''
ELSE
FFIUPCN
END AS "UPC (if applicable)"
但您不应该将 length()
返回的数字与字符串 '14'
进行比较。但是 Db2 正在隐式转换它。
对于多个条件,您可以嵌套 case 语句
Select
case when FIUPCN+FFIUPCN2 = 0
then case when FIUPCN >= value then FIUPCN + 1
else FIUPCN + 2 end
else
case when FIUPCN >= value
then case when FIUPCN <> ''
then FIUPCN + 3
else prvca1 end
else
case
when FIUPCN >= FIUPCN2 and FIUPCN3 <> 0 then FIUPCN + 4
when FIUPCN >= FIUPCNX and FIUPCNY <> 0 then FIUPCN + 5
else prvca1 end
end
end
from table