如何编写用例条件来检查sql中多个值中是否存在特定值

  • 本文关键字:存在 是否 sql 何编写 条件 sql case
  • 更新时间 :
  • 英文 :


我在表中有一列具有单个/多个值。我必须根据条件将其转换为是/否。

示例:

rendition_type_sys
distribution
uploaded, distribution
uploaded
single

我需要根据条件更改值。如果列具有分布,则值应转换为"是",否则为"否">

最终输出:

rendition_type_sys
Yes
Yes
No
No

我尝试了一个案例陈述,但它适用于单值而非多值-

case when ren.rendition_type__sys='distribution' then 'Yes' else 'No' end as rendition_type__sys

首先,您应该修复数据模型,这样就不会在字符串中存储多个值。

与此同时,like应该做你想做的事。例如:

(case when ren.rendition_type__sys like '%distribution%'
then 'Yes' else 'No'
end) as rendition_type__sys

注:在";分布";是元素名称的一部分,如果不希望这样,可以检查分隔符。在标准SQL中,这将是:

(case when ', ' || ren.rendition_type__sys || ', ' like '%, distribution, %'
then 'Yes' else 'No'
end) as rendition_type__sys

字符串串联运算符可能因所使用的数据库而异。

下面的代码将在假设分布不是任何其他离散值的一部分的情况下工作;这是一个示例形式的代码:

WITH rt AS ( 
SELECT 'distribution' AS rendition_type_sys
UNION SELECT 'uploaded, distribution'
UNION SELECT 'uploaded'
UNION SELECT 'single'
)
SELECT CASE WHEN rt.rendition_type_sys LIKE 'distribution' THEN 'Yes' ELSE 'No' END AS Col
FROM rt

您可以考虑为这些";标签";使得它们是离散的。

相关内容

最新更新