SQL WHERE 절에서 쉼표로 구분된 문자열을 IN 목록으로 변환
질문:
쉼표로 구분된 문자열을 저장 프로시저에 매개변수로 저장할 때 작업은 이를 WHERE 절에서 올바른 IN 목록으로 변환하는 것입니다.
모범 사례 솔루션:
이 변환을 효율적으로 수행하려면 사용자 지정 SQL Server 함수를 생성하세요.
CREATE function [dbo].[f_split] ( @param nvarchar(max), @delimiter char(1) ) returns @t table (val nvarchar(max), seq int) as begin set @param += @delimiter ;with a as ( select cast(1 as bigint) f, charindex(@delimiter, @param) t, 1 seq union all select t + 1, charindex(@delimiter, @param, t + 1), seq + 1 from a where charindex(@delimiter, @param, t + 1) > 0 ) insert @t select substring(@param, f, t - f), seq from a option (maxrecursion 0) return end
사용법:
WHERE 절을 다음 명령문으로 채웁니다.
SELECT * FROM yourtable WHERE account in (SELECT val FROM dbo.f_split(@account, ','))
성능 비교:
이 기능은 XML 기반 분할 방법에 비해 더 높은 성능을 제공합니다. 대규모 테스트 데이터 세트 사용:
성능 차이는 다양할 수 있으며, 이는 사용자 정의 분할 기능의 효율성을 강조합니다.
위 내용은 쉼표로 구분된 문자열을 SQL IN 목록으로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!