我有一列中的表是 XML 列。
表格1:
Column1 Column2
1 XML value
例如,在這里我需要找到它有前導空格的屬性值。
這是XML列[上表中的Column2],這里BankAccountNumber標簽有前導空格,所以我需要寫一個查詢來查找表中所有有前導空格的記錄,請你幫我。
<PaymentMethodDetails>
<EFtDetails>
<routingNumber>5575776567</routingNumber>
<BankAccountNumber>1234 </BankAccountNumber>
</EFtDetails>
</PaymentMethodDetails>
uj5u.com熱心網友回復:
不幸的是,SQL Server 不支持starts-with和ends-with運行。但我們可以解決這個問題substring
substring(., 1, 1) = " "
要查找尾隨空格而不是前導空格,請改用
substring(., string-length(.), 1) = " "
要查找BankAccountNumber以空格開頭的任何節點,您可以使用exist
SELECT *
FROM Table1 t1
WHERE t1.Column2.exist('
/PaymentMethodDetails/EFtDetails/BankAccountNumber/text()[substring(., string-length(.), 1) = " "]
') = 1;
要查找以空格開頭的任何節點,您可以使用//包含所有后代節點
SELECT *
FROM Table1 t1
WHERE t1.Column2.exist('
//*[text()[substring(., string-length(.), 1) = " "]]
') = 1;
要將匹配的節點實際切碎為單獨的值,您可以使用.nodes和.value
SELECT
x.nod.value('local-name(.)[1]','nvarchar(max)'),
x.nod.value('text()[1]','nvarchar(max)')
FROM Table1 t1
CROSS APPLY t1.Column2.nodes('
//*[text()[substring(., string-length(.), 1) = " "]]
') x(nod);
資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347757.html
標籤:C# sql 。网 sql-server
