집 >데이터 베이스 >MySQL 튜토리얼 >SQL IN 절에 대해 쉼표로 구분된 문자열을 효율적으로 구문 분석하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!