> 데이터 베이스 > MySQL 튜토리얼 > 동적 SQL 없이 SQL Server의 IN 함수에 쉼표로 구분된 값을 전달하는 방법은 무엇입니까?

동적 SQL 없이 SQL Server의 IN 함수에 쉼표로 구분된 값을 전달하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-22 03:56:11
원래의
251명이 탐색했습니다.

How to Pass Comma-Delimited Values to SQL Server's IN Function Without Dynamic SQL?

동적 SQL 방지: SQL Server의 IN 절에 쉼표로 구분된 값 전달

쉼표로 구분된 문자열을 SQL Server의 IN 함수에 직접 전달하면 유형 변환 오류가 발생하는 경우가 많습니다. 예:

<code class="language-sql">DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';

SELECT * FROM sometable
WHERE tableid IN (@Ids);</code>
로그인 후 복사

IN 절에는 문자열이 아닌 개별 정수 값이 필요하기 때문에 "변환 실패" 오류가 발생합니다.

SQL이 필요 없는 동적 솔루션

동적 SQL의 함정을 피하는 강력한 대안은 CHARINDEX 함수를 활용하는 것입니다.

<code class="language-sql">DECLARE @Ids varchar(50);
SET @Ids = ',1,2,3,5,4,6,7,98,234,'; -- Note the leading and trailing commas

SELECT * FROM sometable
WHERE CHARINDEX(',' + CAST(tableid AS VARCHAR(8000)) + ',', @Ids) > 0;</code>
로그인 후 복사

입력 문자열 @Ids과 캐스트 tableid 앞뒤에 쉼표를 추가하면 쉼표로 구분된 문자열 내에서 각 개별 값이 올바르게 식별됩니다. 그런 다음 CHARINDEX 함수는 수정된 tableid 문자열 내에 각 @Ids이 있는지 효율적으로 확인합니다. 이는 동적 SQL을 요구하지 않고 IN 절의 동작을 효과적으로 모방합니다.

위 내용은 동적 SQL 없이 SQL Server의 IN 함수에 쉼표로 구분된 값을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿