【发布时间】:2015-07-27 05:59:20
【问题描述】:
在我的查询中,我有以下部分代码:
CASE WHEN Field1 LIKE '%choice1%' OR Field1 LIKE '%Choice1%' .... THEN 'category 1'
WHEN Field1 LIKE '%choicea%' OR Field1 LIKE '%Choiceb%' .... THEN 'category 2'
END AS 'Cats'
我有很多这样的选择(1line 大约 20),(2line 大约 15 和儿子)。
我可以做一些事情来使我的代码更干净,我通常使用IN 来做一些事情吗?
例子:
CASE WHEN Field1 IN LIKE ('%choice1'.'%choice2%',...) THEN 'category 1'
WHEN Field1 IN LIKE ('%choicea'.'%choiceb%',...) THEN 'category 2'
END AS 'Cats'
附:我听说我可以以某种方式使用那些||,但我在谷歌中找不到如何使用它们。
你怎么看这个问题?
【问题讨论】:
-
您使用的是什么 RDMS 和版本?
-
我知道清理它的唯一方法是,如果您可以使用此处显示的通配符找到匹配多个条件的模式:w3schools.com/sql/sql_wildcards.asp。无法在单个 LIKE 条件中指定多个模式。
-
如果您的 DBMS 支持正则表达式,您可以使用 REGEXP_SIMILAR 表示 WHEN 的所有 Ors。
Field1多久更新一次?我会添加一个新列,更新到匹配的类别,然后在每次插入/更新期间分配它 -
@Pixalated 我正在使用 Microsoft SQL Server
-
@Chris Flynn 我试过通配符但没有帮助
标签: sql sql-server tsql case sql-like