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

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

Mary-Kate Olsen
풀어 주다: 2025-01-22 04:25:09
원래의
529명이 탐색했습니다.

How to Efficiently Pass Comma-Delimited Values to a SQL Server IN Function?

구분된 값을 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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