0

我正在使用 sql server,我有一个有两个字段的表

  1. 姓名
  2. 描述

我想选择所有包含以下字符串的行

('$','%' , 'ac cd' , 'hjd oih')

我正在这样使用它

select Name , description from table_name 
where Description like any (' %$%',' %[%]%','%ac cd%' , '%hjd oih%')

现在当我运行它时它给出错误

Incorrect syntax near the keyword 'any'.

谢谢 ,

4

1 回答 1

5

如果您必须multiple patterns搜索,那么最好创建derived tabletemporary table存储patterns

DECLARE @patterns TABLE  (
pattern VARCHAR(20)
);

INSERT INTO @patterns VALUES ('%$%'), ('%[%]%'), ('%ac cd%');

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern);

如果您有多个要比较的列,只需在ON子句中添加表达式

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern)
OR (a.Column2 like p.pattern);

更新:使用视图

CREATE VIEW PatternSearch
AS
 WITH Patterns (Patterns)
  AS
  (
     Select  '%Tool%'
     union all
     Select '%Sale%'
     union all
     Select  '%ac cd%'
  )
   SELECT a.* FROM table_name a JOIN Patterns p ON (a.Description LIKE p.pattern)

GO

未经测试,但你可以这样做

来源

于 2013-03-21T07:23:07.843 回答