2014-06-20 2 views
2

쉼표로 구분 된 바코드가있는 쿼리가 있습니다. 그러나 알 수없는 이유로 작동하지 않습니다 :Sql server, sql query, "IN"문이 작동하지 않습니다.

SET @txtBarcode = '2003824'; 

: 아래

내가 하나의 바코드로 변경할 때 잘 즉, 작동하지만

DECLARE @txtBarcode VARCHAR(MAX) 

SET @txtBarcode = '2003824,2003825'; 

SELECT [Scan_Curr_Location] 
FROM BarCode_Location_Current 
WHERE Scan_Curr_BarCodeNo IN (@txtBarcode) 
ORDER BY [Scan_Curr_BarCodeNo] ASC 

작동하지 않는 코드 제발 조언.

감사합니다.

+1

여기에 수락 가능한 답변보기 : https://stackoverflow.com/questions/3516064/creating-a-sql-table-from-a-comma-concatenated-list . 나는 항상이 문제를 해결하는 방법을 좋아했습니다. – VBlades

답변

3

IN은 그렇게 작동하지 않습니다. 쉼표로 구분 된 값을 갖는 문자열이 아닌 쉼표로 구분 된 목록을 사용합니다.

이 작동 것 : 여기 http://www.w3schools.com/sql/sql_in.asp를 기록

SELECT [Scan_Curr_Location] FROM BarCode_Location_Current WHERE Scan_Curr_BarCodeNo 
IN ('2003824', '2003825') ORDER BY [Scan_Curr_BarCodeNo] ASC 
1

으로 : -

IN 연산자 당신이 WHERE 절에 여러 값을 지정할 수 있습니다. 구문

SQL

SELECT COLUMN_NAME 발 TABLE_NAME
FROM
WHERE IN COLUMN_NAME (값, 값 2, ...);

그래서 귀하의 경우 당신은 다음과 같이 쉼표로 구분해야한다 :

또 다른 방법 대신 IN의 LIKE 사용하는 것입니다
SELECT [Scan_Curr_Location] 
FROM BarCode_Location_Current 
WHERE Scan_Curr_BarCodeNo IN ('2003824', '2003825') 
ORDER BY [Scan_Curr_BarCodeNo] ASC 
0

: 주위

DECLARE @txtBarcode VARCHAR(MAX) 

SET @txtBarcode = '2003824,2003825'; 

SELECT [Scan_Curr_Location] 
FROM BarCode_Location_Current 
WHERE @txtBarcode LIKE '%' + Scan_Curr_BarCodeNo + '%' 
ORDER BY [Scan_Curr_BarCodeNo] ASC 

참고 와일드 카드 '%'를 검색중인 항목 ...

관련 문제