구분된 값을 SQL Server IN 함수에 전달
쉼표로 구분된 문자열 값을 SQL Server의 IN 함수에 전달하는 것은 어려울 수 있습니다. 구분된 문자열이 포함된 IN 함수를 직접 사용하면 변환 오류가 발생합니다.
옵션 1: 동적 SQL
한 가지 방법은 IN 절을 동적으로 작성할 수 있는 동적 SQL을 사용하는 것입니다. 그러나 이 방법은 보안 및 성능 문제로 인해 권장되지 않습니다.
옵션 2: 문자열 연산
더 효율적이고 안전한 솔루션은 구분된 문자열을 IN 함수에 허용되는 형식으로 조작하는 것입니다. 한 가지 옵션은 CHARINDEX() 함수를 사용하여 구분된 문자열의 각 값이 테이블의 열 값과 일치하는지 확인하는 것입니다.
<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,' SELECT * FROM sometable WHERE CHARINDEX(','+CAST(tableid AS VARCHAR(8000))+',', @Ids) > 0</code>
이 방법에는 동적 SQL이 필요하지 않으므로 보안과 성능 이점의 균형을 유지합니다.
간단한 해결
덜 우아하지만 더 편리한 솔루션을 찾는 사람들을 위한 간단한 방법이 있습니다.
<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,' SELECT * FROM sometable WHERE ',' + CONVERT(VARCHAR, tableid) + ',' LIKE '%,' + @Ids + '%';</code>
이 방법은 CHARINDEX() 방법만큼 효율적이지는 않지만 빠르고 쉬운 대안을 제공합니다.
위 내용은 쉼표로 구분된 값을 SQL Server IN 함수에 효율적으로 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!