2014-01-24 71 views
0

我挣扎了like运营商,其适用于例如下面Like运算符检查多个单词

词可能是

MS004 -- GTER 
MS006 -- ATLT 
MS009 -- STRR 
MS014 -- GTEE 
MS015 -- ATLT 

会是什么样运营商Sql Server拉其中将包含数据像ms004 and ATLT或类似上述的任何其他组合。

我尝试使用多个例如像

where column like '%ms004 | atl%' 

,但没有奏效。

EDIT

结果应该是唯一的这两个词的组合。

+0

不是一个_exact_重复,[但解决这一问题(http://stackoverflow.com/问题/ 3612858/sql-server-2008-multiple-like-problem)也应该为你工作(或类似的东西)。有可能是一个重复的问题在这里附近... [这是一个接近](http://stackoverflow.com/questions/4643409/how-to-use-like-statement-in-sql-plus-with-multiple - 实际价值),但写得很好/得到回答。 –

+0

您是否将GTER,ALTR存储在另一列中?你是什​​么意思的组合? –

回答

7

似乎你正在寻找这个。

`where column like '%ms004%' or column like '%atl%'` 

或该

`where column like '%ms004%atl%' 
+0

它不会工作我试过了。它将获得将包含单词“ms004”或“atl”的数据。但它应该是两个词组合实际上...... –

+0

答案更新。 –

+0

很棒......(y)正如预期的那样......;)标记为答案......干杯! –

0

尝试这样

select .....from table where columnname like '%ms004%' or columnname like '%atl%' 
0
;WITH LikeCond1 as (
SELECT 'MS004' as L1 UNION 
SELECT 'MS006' UNION 
SELECT 'MS009' UNION 
SELECT 'MS014' UNION 
SELECT 'MS015') 
, LikeCond2 as (
SELECT 'GTER' as L2 UNION 
SELECT 'ATLT' UNION 
SELECT 'STRR' UNION 
SELECT 'GTEE' UNION 
SELECT 'ATLT' 
) 

SELECT TableName.* 
FROM LikeCond1 
    CROSS JOIN LikeCond2 
    INNER JOIN TableName ON TableName.Column like '%' + LikeCond1.L1 + '%' 
         AND TableName.Column like '%' + LikeCond2.L2 + '%'