2013-01-09 2 views
42

WHERE LIKE 'text %'절을 사용하는 문장을 쓰려고했지만 텍스트 매개 변수를 사용하려고하면 결과를받지 못합니다. 예를 들어,이 작품 :T-SQL 및 WHERE LIKE % Parameter % 절

SELECT Employee WHERE LastName LIKE '%ning%' 

이 사용자가 Flenning 등을 배치, Ningle, 그러나이 사항이없는 것 반환하지 않을 것이다 : 발견

DECLARE @LastName varchar(max) 
SET @LastName = 'ning' 
SELECT Employee WHERE LastName LIKE '%@LastName%' 

결과가 없습니다. 어떤 제안? 미리 감사드립니다.

답변

93

이 있어야한다 :

... 
WHERE LastName LIKE '%' + @LastName + '%'; 
대신

:

... 
WHERE LastName LIKE '%@LastName%' 

또는이 :

... 
WHERE LastName LIKE Concat('%',@LastName,'%') 
+1

감사 질문에 대한 이전 팁. 그러나 그것은 아니었다. 어쨌든 [성능이 좋은 답변을 찾는 데 유용할까요?] (http://stackoverflow.com/a/14243580/1389394) – bonCodigo

+1

@bonCodigo 정말 잘 모르겠지만 성능과 최적화는 아닙니다. 내 영역. 또한, 이러한 기능은 벤더에 따라 다르며, 귀하의 경우에는 Oracle RDBMS가 어떻게 평가하는지에 따라 다르며 오라클에 대해서는 알지 못합니다. 죄송합니다. –

+2

이것은 나를 위해 작동하지 않았다. %는 addParameter 섹션에 있어야합니다. 제임스 Curran 여기에 대답을 참조하십시오 http://stackoverflow.com/questions/251276/howto-parameters-and-like-statement-sql – bendecko

14

정답은, 그의 '%' -sign가의 일부이기 때문이다 귀하의 검색 표현식은 귀하의 VALUE의 일부 여야하므로 언제든지 SET @LastName (당신이 '%' + [userinput] + '%'

로 설정한다) TSQL 프로그래밍 언어 또는에서 일하거나, 당신의 예에서 :

DECLARE @LastName varchar(max) 
SET @LastName = 'ning' 
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%' 
+1

감사합니다. 감사합니다. –

1

당신이이 일을하려고 할 수 있습니다 사용 CONCAT

WHERE LastName LIKE Concat('%',@LastName,'%')