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 중국어 웹사이트의 기타 관련 기사를 참조하세요!