ホームページ >データベース >mysql チュートリアル >T-SQL の区切り文字列から特定のデータを抽出するにはどうすればよいですか?

T-SQL の区切り文字列から特定のデータを抽出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-21 06:50:13707ブラウズ

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

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