> 데이터 베이스 > MySQL 튜토리얼 > 쉼표로 구분된 문자열을 SQL IN 목록으로 효율적으로 변환하는 방법은 무엇입니까?

쉼표로 구분된 문자열을 SQL IN 목록으로 효율적으로 변환하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-09 14:26:45
원래의
348명이 탐색했습니다.

How to Efficiently Convert a Comma-Separated String to an SQL IN List?

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 기반 분할 방법에 비해 더 높은 성능을 제공합니다. 대규모 테스트 데이터 세트 사용:

  • XML 분할 시간: 1분 21초
  • f_split 함수에는 43초가 소요됩니다

성능 차이는 다양할 수 있으며, 이는 사용자 정의 분할 기능의 효율성을 강조합니다.

위 내용은 쉼표로 구분된 문자열을 SQL IN 목록으로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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