>데이터 베이스 >MySQL 튜토리얼 >구분 기호를 사용하여 T-SQL에서 문자열을 강력하게 분할하는 방법은 무엇입니까?

구분 기호를 사용하여 T-SQL에서 문자열을 강력하게 분할하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-08 09:37:45623검색

How to Robustly Split Strings in T-SQL Using Delimiters?

T-SQL 문자열 분할: 누락된 구분 기호를 현명하게 처리

T-SQL에서는 구분 기호를 기준으로 문자열을 분할하는 것이 까다로울 수 있으며, 특히 일부 행에 구분 기호가 누락된 경우 더욱 그렇습니다. 이 문서에서는 이 문제를 해결하기 위한 향상된 방법을 제공합니다.

데이터가 다음과 같다고 가정합니다.

<code>John/Smith
Jane/Doe
Steve
Bob/Johnson</code>

원본 코드:

다음 코드는 데이터 분할을 시도하지만 구분 기호가 없으면 실패합니다.

<code>SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM MyTable</code>

향상된 코드:

구분자가 누락된 경우를 처리하려면 다음 CASE 표현식을 사용할 수 있습니다.

<code>SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn)
            ELSE CHARINDEX('/', myColumn) - 1
            END) AS FirstName
    ,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn) + 1
            ELSE CHARINDEX('/', myColumn) + 1
            END, 1000) AS LastName
FROM MyTable</code>

설명:

  • CASE 표현식은 구분자(/)가 존재하는지 확인합니다.
  • 있는 경우 표현식은 구분 기호 위치를 기준으로 FirstName 및 LastName의 길이를 계산합니다.
  • 없는 경우 표현식은 문자열의 전체 길이를 FirstName으로 사용하고 LastName을 NULL로 설정합니다.

이 코드는 예상된 결과를 생성합니다.

<code>FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson</code>

위 내용은 구분 기호를 사용하여 T-SQL에서 문자열을 강력하게 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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