在一個 T-SQL 腳本中,我呼叫了一個存盤程序,這個存盤程序處理 HTTP 請求并回傳 HTTP 狀態代碼、狀態文本和回應標頭等內容。
存盤程序是我無法編輯的第 3 方管理/創建的 SP(因為當供應商更新他們的應用程式時,SP 將被覆寫)。所以我必須處理SP的輸出。
在進行 HTTP 呼叫后,我收到的回應標頭是所有標頭的完整字串(由兩個空格“”分隔)。
這是回應標頭:
Cache-Control: no-cache,no-store,max-age=0 Connection: keep-alive Date: Thu, 10 Feb 2022 07:46:23 GMT Transfer-Encoding: chunked Via: 1.1 <snip>.cloudfront.net (CloudFront) Content-Type: application/json Notification-Box-Id: 627ac06d-snip-snip-snip-7ae2cda3f8ae Notification-Message-Id: c6ef44cd-snip-snip-snip-be196a48751b X-Envoy-Upstream-Service-Time: 105 Strict-Transport-Security: max-age=31536000; Content-Security-Policy: default-src 'self' Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Cache: Miss from cloudfront X-Amz-Cf-Pop: FRA6-C1 X-Amz-Cf-Id: 61b-snip-snipsnipsnip-vpg==
我需要從此字串中獲取兩個回應標頭(Notification-Box-Id 和 Notification-Message-Id)的值。我嘗試使用 STRING_SPLIT,但它不接受兩個空格(因為 nchar(1))。
我的假設是格式總是相同的,所以使用 LEFT()、RIGHT() 和 LEN() 我可能可以管理它作業。但這是要走的路嗎?還有其他不那么混亂的選擇嗎?
uj5u.com熱心網友回復:
這很容易。獲取delimitedSplit8k的副本。它回傳專案及其在字串中的序號位置。而且速度很快。
DECLARE @x VARCHAR(1000) = 'Cache-Control: no-cache,no-store,max-age=0 Connection: keep-alive Date: Thu, 10 Feb 2022 07:46:23 GMT Transfer-Encoding: chunked Via: 1.1 <snip>.cloudfront.net (CloudFront) Content-Type: application/json Notification-Box-Id: 627ac06d-snip-snip-snip-7ae2cda3f8ae Notification-Message-Id: c6ef44cd-snip-snip-snip-be196a48751b X-Envoy-Upstream-Service-Time: 105 Strict-Transport-Security: max-age=31536000; Content-Security-Policy: default-src ''self'' Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Cache: Miss from cloudfront X-Amz-Cf-Pop: FRA6-C1 X-Amz-Cf-Id: 61b-snip-snipsnipsnip-vpg== ';
SELECT split.*
FROM
(
SELECT split.Item, Val = LEAD(split.Item,1) OVER (ORDER BY split.ItemNumber)
FROM DW.dbo.DelimitedSplit8K(@x, '') AS split
) AS split(Item,ItemValue)
WHERE split.Item LIKE '%Notification-Box-Id%'
OR split.Item LIKE '%Notification-Message-Id%';
回報:
Item ItemValue
------------------------- -----------------------------------------
Notification-Box-Id: 627ac06d-snip-snip-snip-7ae2cda3f8ae
Notification-Message-Id: c6ef44cd-snip-snip-snip-be196a48751b
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/425367.html
下一篇:STRING_AGG與全部聯合
