ホームページ >データベース >mysql チュートリアル >T-SQL でオプションの区切り文字を使用して文字列を効率的に分割する方法
T-SQL での区切り文字ありまたはなしの文字列分割の処理
SQL クエリでは、多くの場合、文字列を操作し、区切り文字に基づいて特定の部分を抽出する必要があります。ただし、区切り文字が欠落している、またはオプションである可能性がある状況に対処するには、慎重な計画が必要です。
指定されたシナリオのタスクは、「/」文字で区切られた名前 (名と姓) を含む文字列列を分割することです。コードは最初、すべての行に区切り文字が含まれていることを前提としていますが、区切り文字が含まれていない行ではエラーが発生します。
この問題に効率的に対処するために、次の変更を実装できます:
<code class="language-sql">SELECT CASE WHEN CHARINDEX('/', myColumn) = 0 THEN myColumn ELSE SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn) - 1) END AS FirstName, CASE WHEN CHARINDEX('/', myColumn) = 0 THEN NULL ELSE SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, LEN(myColumn)) END AS LastName FROM MyTable;</code>
この変更されたコードは、CASE ステートメントを使用して、'/' 文字が存在するかどうかをチェックします (存在しない場合、CHARINDEX('/') は 0 を返します)。見つかった場合、文字列は期待どおりに分割されます。そうでない場合は、文字列全体が名として扱われ、姓が NULL に設定されます。
このロジックを追加すると、クエリが堅牢になり、区切り文字の有無にかかわらず行を処理できるようになり、目的の出力が得られます。
FirstName | LastName |
---|---|
John | Smith |
Jane | Doe |
Steve | NULL |
Bob | Johnson |
以上がT-SQL でオプションの区切り文字を使用して文字列を効率的に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。