我在我的資料庫中獲得了以下條目,其列名 - properties_desc:
#Thu Sep 03 02:18:11 UTC 2020 cardType=MasterCard cardDebit=true cardUniqueNumber=f0b03da93bc70fbc194a5a4ef5879685
我想修剪條目,所以我得到:萬事達卡
所以基本上,我想要'cardType ='之后和''之前的所有內容。
我嘗試在 SQL Server 中的某個字符之后和之前參考這個獲取所有內容, 但這適用于特殊字符而不是字串。
我的嘗試:
SUBSTRING(properties_desc, length(SUBSTRING(properties_desc, 0, length(properties_desc) - CHARINDEX ('cardType=', properties_desc))) 1,
length(properties_desc) - length(SUBSTRING(properties_desc, 0, length(properties_desc) - CHARINDEX ('cardType=', properties_desc))) - length(SUBSTRING(
properties_desc, CHARINDEX (' ', properties_desc), length(properties_desc))))
但是上面的查詢不起作用。任何幫助表示贊賞。我該如何解決?
uj5u.com熱心網友回復:
您已將此問題標記為 sql-server 和 databricks。根據您使用 length() 而不是 len(),我假設您使用的是 databricks。在這種情況下,您可以使用 regexp_extract() 函式
試試:“regexp_extract(properties_desc, '(?<=cardType=)[^ ]*')”。
這是未經測驗的,因為我不是資料塊程式員。
上面的“[^ ]*”會匹配并提取出“cardType=”之后的一串非空格字符。"(?<=...)" 是一個 "look-behind" 構造,它要求匹配的文本前面有 "cardType=",但結果中不包括該文本。最終結果是正則運算式匹配并提取“cardtype=”之后的所有內容,直到下一個空格(或字串的末尾)。
正則運算式是一個非常強大的字串匹配工具。如果您還不熟悉它們,那么值得學習。(我希望 SQL Server 擁有它們。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406858.html
標籤:
