SQL在语句中使用like语法?

SQL在语句中使用like语法?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想这样做,即在in子句中使用通配符: SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%') SQL Server中不支持此操作。。。。有没有其他方法来实现它 寻找除以下内容以外的其他内容: SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or..... 不,我能想到的另一种方法是加入临时表,但必须消除重复行

我想这样做,即在in子句中使用通配符:

SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%')
SQL Server中不支持此操作。。。。有没有其他方法来实现它

寻找除以下内容以外的其他内容:

SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or.....

不,我能想到的另一种方法是加入临时表,但必须消除重复行

您的这个查询效率极低,因为它将无条件地扫描表。也许您应该考虑分离关键字或引入全文索引

如果您想进行全文搜索,那么我建议您在评估Sql Server全文解决方案时,考虑一些重要因素,如sphinx或lucene

SELECT DISTINCT *
FROM
  mytable M
  JOIN
  (
  SELECT '%test%' AS pattern
  UNION ALL SELECT '%testing%'
  ...
  ) foo ON M.keywords LIKE foo.Pattern
也可以是CTE或temp表

这在MS SQL中不受支持。。。。是 还有其他方法可以实现吗


是的,至少。

您可以使用正则表达式来执行此操作。 在一个正则表达式中,可以在一个表达式中定义任意多个模式

有很多关于MS SQL SERVER中正则表达式匹配的文章。 我在MySQL中使用RLIKE进行正则表达式匹配


我还附加了用于MS SQL SERVER正则表达式匹配的(&F)。

我假定您的实际使用更为复杂,但在您给出的示例中,您只需要像“%test%”,因为与“%testing%”匹配的任何内容也与“%test%”匹配。另外,如果你能控制你的数据库结构,你最好规范化关键字的存储。@larry lustig:我只是举一个玩具例子。。。我想做点复杂的事。。thanks@OMG小马:当然。啊!注意性能,最佳情况(1个关键字)这将与原始情况一样快。最坏的情况是,由于
不同的
@Sam Saffron,它将根据行宽慢几倍:如果没有适当的文本搜索,无论哪种方式都会很差