>데이터 베이스 >MySQL 튜토리얼 >SQL Server를 사용하여 쉼표로 구분된 셀 값을 개별 행으로 변환하는 방법은 무엇입니까?

SQL Server를 사용하여 쉼표로 구분된 셀 값을 개별 행으로 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 12:46:44782검색

How to Convert Comma-Separated Cell Values into Individual Rows Using SQL Server?

SQL Server를 사용하여 쉼표로 구분된 셀 값을 개별 행으로 변환

테이블의 데이터를 처리할 때 저장된 값이 나타날 수 있습니다. 단일 셀 내에서 쉼표로 구분된 문자열로 표시됩니다. 분석이나 추가 처리를 용이하게 하려면 이러한 값을 별도의 행으로 분할해야 할 수도 있습니다. 이 문서에서는 SQL Server SELECT 쿼리를 사용하여 이 목표를 달성하는 방법을 살펴봅니다.

문제:

"String"이라는 열이 있는 "Sample"이라는 테이블을 생각해 보세요. 쉼표로 구분된 값을 포함합니다. 각 값이 자체 행을 차지하는 형식으로 데이터를 변환해야 합니다.

원래 테이블:

Id String
1 abc,def,ghi
2 jkl,mno,pqr

원하는 출력:

Id processedrows
1 abc
1 def
1 ghi
2 jkl
2 mno
2 pqr

해결 방법:

원하는 출력을 얻으려면 다음을 활용할 수 있습니다. SELECT 쿼리:

SELECT A.[id],
     Split.a.value('.', 'VARCHAR(100)') AS String
FROM  (SELECT [id],
         CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
     FROM  TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);

설명:

  1. 괄호로 묶인 내부 쿼리는 "문자열" 열에서 각 문자열을 래핑하여 XML 문자열을 구성합니다. XML 태그()가 있는 값입니다. 이 단계는 후속 분할 작업을 활성화하는 데 필요합니다.
  2. CROSS APPLY 연산자는 String.nodes() 함수를 내부 쿼리의 각 행에 적용하여 "문자열" 열을 XML 내의 개별 노드로 효과적으로 분할합니다. tree.
  3. 마지막으로 SELECT 문은 각 분할 노드의 값과 함께 "id" 열을 검색하여 자동으로 VARCHAR 데이터로 변환됩니다. type.

참조:

이 기술과 대체 솔루션에 대한 자세한 내용은 다음 리소스를 참조하세요.

http:/ /www.sqljason.com/2010/05/converting-single-comma-separated-row.html

위 내용은 SQL Server를 사용하여 쉼표로 구분된 셀 값을 개별 행으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.