>데이터 베이스 >MySQL 튜토리얼 >T-SQL의 구분된 문자열에서 특정 데이터를 추출하는 방법은 무엇입니까?

T-SQL의 구분된 문자열에서 특정 데이터를 추출하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-21 06:50:13748검색

How to Extract Specific Data from a Delimited String in T-SQL?

T-SQL의 구분된 문자열에서 특정 데이터를 분리하는 방법

SQL 세계에서 문자열 작업은 때때로 문제가 될 수 있습니다. , 특히 여러 데이터 포인트가 포함된 긴 문자열에서 특정 정보를 추출하려고 할 때 그렇습니다. 구분 기호로 구분된 여러 키-값 쌍을 포함하는 문자열을 보유하는 열이 있는 테이블이 있는 시나리오를 살펴보겠습니다.

문제 정의

주어진 테이블 다음 구조를 사용합니다.

Col1 = '123'
Col2 = 'AAAAA'
Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'

귀하의 목표는 "클라이언트 이름" 값만 추출하는 것입니다. 이 경우에는 "Col3" 열의 "B B BOB"입니다. 키-값 쌍을 구분하는 구분 기호는 '|'입니다. 파이프 문자이며 키-값 쌍 자체는 앞뒤 공백이 있는 등호(' = ')로 구분됩니다.

해결책

이 문제를 해결하려면 T-SQL에서 문제가 발생하는 경우 다음과 같은 문자열 조작 기술을 사용할 수 있습니다.

  1. CHARINDEX 및 SUBSTRING: CHARINDEX 함수를 사용하여 "클라이언트 이름" 키의 시작 위치를 찾고 원래 문자열에서 해당 값을 부분 문자열화합니다.
  2. STUFF: STUFF 함수를 사용하여 부분 문자열의 시작 부분에 구분 기호를 삽입하여 나머지 부분과 구분합니다. string.
  3. LTRIM 및 RTRIM: LTRIM 및 RTRIM 함수를 사용하여 추출된 값에서 선행 또는 후행 공백을 제거합니다.

코드 조각

특정 데이터의 경우 다음 코드 조각을 사용할 수 있습니다. 원하는 결과를 얻으려면:

Select col1, col2, LTRIM(RTRIM(SUBSTRING(
    STUFF(col3, CHARINDEX('|', col3,
    PATINDEX('%|Client Name =%', col3) + 14), 1000, ''),
    PATINDEX('%|Client Name =%', col3) + 14, 1000))) col3
from Table01

참고: 키의 시작 위치를 찾기 위해 CHARINDEX와 PATINDEX를 사용할 때 약간의 성능 차이가 발생할 수 있습니다. 그러나 두 접근 방식 모두 효율성이 비슷하기 때문에 일반적으로 비슷한 결과를 낳습니다.

위 내용은 T-SQL의 구분된 문자열에서 특정 데이터를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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