如何在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 中的問題,您可以採用以下字串操作技術:
程式碼片段
對於您的特定數據,您可以使用以下程式碼片段來實現期望的結果:
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中文網其他相關文章!