ホームページ >データベース >mysql チュートリアル >区切り文字を使用して T-SQL の文字列を確実に分割する方法

区切り文字を使用して T-SQL の文字列を確実に分割する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-08 09:37:45657ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。