我想做这样的事情,即在in子句中使用外卡字符:
SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%')
SQL Server不支持这种方法....是否有其他方法可以实现它...
寻找以下内容:
SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or.....
答案 0 :(得分:8)
不,只有我能想到的另一种方法是加入临时表,但是你必须消除重复的行。
这对你的查询非常低效,因为它将无条件地进行表扫描。也许您应该考虑分离关键字或引入全文索引。
如果您想查看全文搜索,那么当您评估Sql Server全文解决方案时,我建议您查看一些重量级的重量,如sphinx或lucene。
答案 1 :(得分:3)
SELECT DISTINCT *
FROM
mytable M
JOIN
(
SELECT '%test%' AS pattern
UNION ALL SELECT '%testing%'
...
) foo ON M.keywords LIKE foo.Pattern
也可以是CTE或临时表
答案 2 :(得分:2)
MS SQL不支持....是 有其他方法可以实现吗?
答案 3 :(得分:0)