我想从[Column]
中选择所有在其字符串中具有如下单词的行:
select [Column]
from [db]
where [Column] like '%some%' or
[Column] like '%word%' or
[Column] like '%and%' or
[Column] like '%another%'
但是,由于我的单词很长,所以我不想重复or [Column] like '%%'
。有没有更好的方法来写这个?我正在使用SQL Server Management Studio。
答案 0 :(得分:2)
使用临时表或变量表,并将WHERE
移至JOIN
。
DECLARE @PartialMatches TABLE (PartialMatch VARCHAR(100))
INSERT INTO @PartialMatches (PartialMatch)
VALUES ('some'),('word'),('and'),('another')
select
D.[Column]
from
[db] AS D
INNER JOIN @PartialMatches AS P ON D.[Column] LIKE '%' + P.PartialMatch + '%'
您可以选择在表上或表外添加类似的特殊字符(%
)。将它们放在桌子上可以提供更大的灵活性,例如,您可以放some%
和%word
。
答案 1 :(得分:0)
这个(匹配列表或不匹配列表)对我有用...
declare @matchs table ( match varchar(50));
declare @notmatchs table ( notmatch varchar(50));
insert into @matchs (match) values ('%matchfield1%');
insert into @notmatchs (notmatch) values ('%nomatch1'), ('nomatch2%');
select e.*
from mytable e
where not exists (select top 1 1 from @notmatchs nm where e.ObjectName like nm.notmatch)
and exists (select top 1 1 from @matchs m where e.ObjectName like m.match)
答案 2 :(得分:-1)
您可以使用以下格式编写查询。
select [Column]
from [db]
where [Column] like '%[some-word-and-another]%'