집 >데이터 베이스 >MySQL 튜토리얼 >SQL 열의 구분된 값을 여러 행으로 분할하려면 어떻게 해야 합니까?
SQL 열의 구분 기호는 값을 여러 행으로 분할하려고 할 때 문제를 일으킬 수 있습니다. 행. 이 문서에서는 최신 버전과 레거시 버전의 SQL Server에 대한 솔루션을 제공합니다.
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의 경우 다음과 같은 분할 함수를 만듭니다.
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); GO
분할 기능이 생성되면 이를 사용하여 추출할 수 있습니다. 값:
SELECT s.[message-id], f.Item FROM dbo.SourceData AS s CROSS APPLY dbo.SplitStrings(s.[recipient-address], ';') as f;
최적의 저장 및 참조를 위해서는 열 이름에 대시를 사용하지 마세요. 대괄호로 묶어야 하기 때문입니다.
위 내용은 SQL 열의 구분된 값을 여러 행으로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!