首頁 >資料庫 >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'

您的目標是只提取「客戶端名稱」值,在本例中為是“B B BOB”,來自“Col3”列。分隔鍵值對的分隔符是“|”管道字符,鍵值對本身由等號('=')分隔,前導和尾隨空格。

解決方案

解決此問題T-SQL 中的問題,您可以採用以下字串操作技術:

  1. CHARINDEX 和SUBSTRING: 使用CHARINDEX 函數定位「Client Name”鍵的起始位置,並從原始字串中提取對應值的子字串。
  2. STUFF: 使用 STUFF 函數在子字串的開頭插入分隔符號以將其與其餘部分分開字串。
  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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn