2013-08-06 2 views
1

내 프로젝트에 문제가

처럼 N으로 선택하는 방법 경우 MSSQL

TABLENAME와 작업 : 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 
) 
관련 문제