SQL 쿼리에서 쉼표로 구분된 문자열 처리
많은 데이터베이스 작업에는 입력 매개변수 목록이 필요합니다. 이러한 목록이 쉼표로 구분된 문자열로 제공되는 경우 이를 SQL 호환 형식으로 변환하는 것이 중요합니다.
도전:
다음과 같이 쉼표로 구분된 문자열을 받는 저장 프로시저를 생각해 보세요.
<code class="language-sql">DECLARE @Account AS VARCHAR(200) SET @Account = 'SA,A'</code>
목표는 이 문자열을 사용 가능한 SQL IN
절로 변환하는 것입니다.
<code class="language-sql">WHERE Account IN ('SA', 'A')</code>
고성능 솔루션:
사용자 정의 함수는 가장 효율적인 접근 방식을 제공합니다. 이 함수는 쉼표로 구분된 문자열을 테이블로 분할합니다.
<code class="language-sql">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</code>
이 함수는 SQL 쿼리 내에서 사용됩니다.
<code class="language-sql">SELECT * FROM yourtable WHERE account in (SELECT val FROM dbo.f_split(@account, ','))</code>
이 방법이 우수한 이유:
XML 구문 분석과 같은 대안과 비교하여 이 기능은 다음을 제공합니다.
위 내용은 SQL IN 절에 대해 쉼표로 구분된 문자열을 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!