> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 구분된 수신자 주소를 여러 행으로 분할하는 방법은 무엇입니까?

SQL에서 구분된 수신자 주소를 여러 행으로 분할하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-31 19:18:11
원래의
634명이 탐색했습니다.

How to Split Delimited Recipient Addresses in SQL into Multiple Rows?

SQL 열의 구분된 값을 여러 행으로 분할

문제 설명:
Exchange 2007을 삽입할 때 메시지 추적은 구분된 수신자 주소의 수신자를 SQL 테이블에 기록합니다. 열에 여러 값이 포함되는 경우가 있습니다. 사용자는 원래 메시지 ID 연결을 유지하면서 이러한 값을 다른 테이블의 별도 행으로 분할하려고 합니다.

해결책:

SQL Server 2016
새로운 STRING_SPLIT 활용 함수:

SELECT s.[message-id], f.value
  FROM dbo.SourceData AS s
  CROSS APPLY STRING_SPLIT(s.[recipient-address], ';') as f;
로그인 후 복사

SQL Server Pre-2016
사용자 지정 분할 함수 dbo.SplitStrings 생성:

CREATE FUNCTION dbo.SplitStrings
(
    @List       NVARCHAR(MAX),
    @Delimiter  NVARCHAR(255)
)
RETURNS TABLE
AS
    RETURN (SELECT Number = ROW_NUMBER() OVER (ORDER BY Number),
        Item FROM (SELECT Number, Item = LTRIM(RTRIM(SUBSTRING(@List, Number, 
        CHARINDEX(@Delimiter, @List + @Delimiter, Number) - Number)))
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY s1.[object_id])
        FROM sys.all_objects AS s1 CROSS APPLY sys.all_objects) AS n(Number)
    WHERE Number <= CONVERT(INT, LEN(@List))
        AND SUBSTRING(@Delimiter + @List, Number, 1) = @Delimiter
    ) AS y);
로그인 후 복사

데이터 조작:

SELECT s.[message-id], f.Item
  FROM dbo.SourceData AS s
  CROSS APPLY dbo.SplitStrings(s.[recipient-address], ';') as f;
로그인 후 복사

위 내용은 SQL에서 구분된 수신자 주소를 여러 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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