2013-08-06 39 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 
)