n SQL语句中的LIKE数

时间:2016-04-14 03:48:02

标签: sql-server

假设我有一个表list,其中包含

等记录列表
list_Name
A1
A2
A3
A4

另一个表dest包含一个长字符串

的列
ID  String
1   A1 This is line 1 A2
2   A3 Line number 2
3   A5 Line 3

使用list表中的值,我想找到dest

中的记录

我所知道的是逐一取出它们。实施例 -

SELECT * FROM dest WHERE string LIKE '%A1%' OR string LIKE '%A2%'

但我怎样才能对LIKE表中的每个值使用list

list表可以有n个记录。

1 个答案:

答案 0 :(得分:2)

您可以使用JOIN/EXISTS检查LIST表中的每个值。

我通常更喜欢EXISTS来检查存在。

SELECT * 
FROM dest d 
WHERE exists (select 1 from list l where d.string LIKE '%'+list_Name+'%')

要解决排序规则冲突,我们可以使用显式排序规则

SELECT * 
FROM   dest d 
WHERE  EXISTS (SELECT 1 
               FROM   list l 
               WHERE  d.string COLLATE database_default LIKE 
                      '%' + list_name + '%' COLLATE database_default)