2013-08-06 35 views
1

如何用N選擇像

我有我的項目的問題時,與MSSQL

表名工作:TBA

ID | COL 
---+------ 
1 | 'abc' 
2 | 'azc' 
3 | 'xyz' 
4 | '123' 


Proceduce:psearch來(@input字符串)

我想選擇tbA結合LIKE,IN和OR與理想:

SELECT * FROM tbA a WHERE a.Z IN ('"a%c" OR "x%"')

這樣的事情,也許我有一個解決方案是全文搜索,但我不想使用它。

我的期望

ID | COL 
---+------ 
1 | 'abc' 
2 | 'azc' 
3 | 'xyz' 

我希望大家給我一個解決方案或別的東西,謝謝大家。


+0

類似的問題在此〔http://stackoverflow.com/questions/16459144 /shorten-sql-syntax-of-like-clause-to-in-clause](http://stackoverflow.com/questions/16459144/shorten-sql-syn稅收的樣條對在從句) – Romesh

回答

4

變體1.

SELECT * FROM tbA a WHERE a.Z LIKE 'a%c' OR a.Z LIKE 'x%' 

變體2.

DECLARE @tPattern_ TABLE (pat VARCHAR(50)); 

INSERT INTO @tPattern_ (pat) 
SELECT 'a%c' UNION ALL SELECT 'x%' 

SELECT DISTINCT a.* 
FROM tbA a 
INNER JOIN @tPattern_ p ON a.Z LIKE p.pat 
1

變體3.

DECLARE @temp TABLE (title NVARCHAR(50)) 
INSERT INTO @temp (title) 
VALUES ('a c'), ('x1111'), ('blank') 

SELECT t.* 
FROM @temp t 
WHERE EXISTS(
    SELECT 1 
    FROM (VALUES ('a%c'), ('x%')) c(t) 
    WHERE title LIKE t 
)