2013-03-21 53 views
0

我使用SQL Server和我有有两个字段如何搜索多个字符串或字符在字段中SQL

  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'. 

感谢,

+0

请检查类似的问题: learningloop 2013-03-21 07:22:04

回答

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 

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

Source

+0

但如果想在SQL视图中执行相同的操作。因为我尝试过,但它的错误 – user2193861 2013-03-21 07:36:02

+0

如果你在View中这样做,那么我认为你需要使用CTE – praveen 2013-03-21 07:38:47

+0

你可以编辑你的答案吗? – user2193861 2013-03-21 07:39:37