【问题标题】:Exception in case statement案例陈述中的例外
【发布时间】:2017-08-28 13:57:59
【问题描述】:

如何在 case 语句中抛出异常?我相信signal 是正确的说法。案例陈述是当在名称中找到单词“corp”然后在列中有一个 1 但如果名称中包含单词“dollar”,我想要一个例外

Name                     Is_comp
Dollar Tree Corp       
First Hand Corp           1

Select 
when name like 'corp' 
then 1 
end as is_comp

【问题讨论】:

  • 这在 SQL 语句中是一件很奇怪的事情。你在这里的最终目的是什么?这感觉像是一个 XY 问题。
  • 基本上我有一个名称列表,我需要手动整理并确定名称是公司还是个人。我正在尝试过滤 LLC、INC、CO 等公司的常用名称。但有时我会遇到公司名称“Dollar Tree Inc”和人名“Finch”等问题,当这种情况发生时,我需要例外。跨度>

标签: psql business-logic


【解决方案1】:

我认为,根据您要查找的内容,您只需要一个更漂亮的 CASE 语句:

SELECT
    CASE 
        WHEN 
            name LIKE ANY ('%corp%','%llc%','%inc%') /*list of names with wildcards*/
            AND name not like '%Finch%' /*don't match on finch%/ 
            AND name not like ANY ('%Finch%','%Brian%') /*or optionally don't match on any of these name substrings*/
            THEN 1 
        END 'is_comp'
FROM <table>

【讨论】:

  • 所以在这种情况下,您拥有 INC。我不希望 Finch 在列中作为 1 包含在内。现在,您将 INC 设置为 %inc%,这意味着将包含 INC 的所有内容。我想排除芬奇
  • 还是一样的想法。我已经更新了排除 finch 的答案(单独或在列表中)
  • 还有其他方法可以将LIKE 语句放入列表中吗?
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2010-10-30
  • 2016-05-13
  • 2016-02-21
  • 1970-01-01
  • 2015-01-24
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多