Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengekstrak Data Khusus daripada Rentetan Terhad dalam T-SQL?

Bagaimana untuk Mengekstrak Data Khusus daripada Rentetan Terhad dalam T-SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-21 06:50:13707semak imbas

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

Cara Mengasingkan Data Tertentu daripada Rentetan Terhad dalam T-SQL

Dalam dunia SQL, bekerja dengan rentetan kadangkala boleh menimbulkan cabaran , terutamanya apabila cuba mengekstrak maklumat khusus daripada rentetan yang lebih panjang yang mengandungi berbilang titik data. Mari terokai senario di mana anda mempunyai jadual dengan lajur yang memegang rentetan yang mengandungi berbilang pasangan nilai kunci yang dipisahkan oleh pembatas.

Definisi Masalah

Diberikan jadual dengan struktur berikut:

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'

Matlamat anda adalah untuk mengekstrak hanya "Nama Pelanggan" nilai, yang dalam kes ini ialah "B B BOB," daripada lajur "Col3". Pembatas yang memisahkan pasangan nilai kunci ialah '|' aksara paip dan pasangan nilai kunci itu sendiri dibataskan oleh tanda sama dengan (' = ') dengan ruang putih di hadapan dan di belakang.

Penyelesaian

Untuk menangani perkara ini masalah dalam T-SQL, anda boleh menggunakan manipulasi rentetan berikut teknik:

  1. CHARINDEX dan SUBSTRING: Gunakan fungsi CHARINDEX untuk mencari kedudukan permulaan kekunci "Nama Pelanggan" dan subrentetan nilai masing-masing daripada rentetan asal.
  2. BAHAN: Gunakan fungsi STUFF untuk memasukkan pembatas pada permulaan subrentetan ke asingkannya daripada rentetan yang lain.
  3. LTRIM dan RTRIM: Gunakan fungsi LTRIM dan RTRIM untuk mengalih keluar sebarang ruang hadapan atau belakang daripada nilai yang diekstrak.

Snippet Kod

Untuk data khusus anda, anda boleh menggunakan yang berikut coretan kod untuk mencapai hasil yang diingini:

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

Nota: Anda mungkin mengalami perbezaan prestasi kecil apabila menggunakan CHARINDEX berbanding PATINDEX untuk mencari kedudukan permulaan kunci. Walau bagaimanapun, kedua-dua pendekatan biasanya menghasilkan hasil yang serupa, kerana kecekapannya adalah setanding.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Data Khusus daripada Rentetan Terhad dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn