2014-04-03 45 views
2

如何從SQL中的XML列中讀取布爾值。以下是示例代碼。使用XQuery Value函數可以實現嗎?在SQL中讀取XML BOOLEAN值

DECLARE @XML XML = '<form> 
        <field name="BAR_prior_report" type="Boolean"><value>false</value></field> 
         <field name="BAR_multiple_branches" type="Boolean"><value>true</value></field> 
        </form>' 

我想看到BAR_prior_report爲假,並BAR_multiple_branches爲真

+0

您正在編寫** SQL **(結構化查詢語言)並且真正意味着Microsoft ** SQL Server **(實際產品)是由這個嗎?如果是:請添加'sql-server'標籤來清除。如果不是:**數據庫系統是用來做什麼的? –

回答

5

這將返回領域BIT列,其中大多數語言將解析爲一個布爾(存在不SqlServer的布爾值)。

SELECT 
    Nodes.node.value('(field[@name="BAR_prior_report"]/value)[1]', 'bit') 
    AS BAR_prior_report, 
    Nodes.node.value('(field[@name="BAR_multiple_branches"]/value)[1]', 'bit') 
    AS BAR_multiple_branches 
FROM 
    @XML.nodes('//form') AS Nodes(node); 

Fiddle here

可以總是通過另一投影用於進一步的處理通過此,例如here

+0

在Oracle中也沒有布爾值,所以根據他/她的偏好,OP可能必須將值解碼爲varchar2(例如'TRUE'或'FALSE')或者'1'或'0'。 參考:http://stackoverflow.com/questions/30062/boolean-field-in-oracle和https://asktom.oracle.com/pls/apex/f?p = 100:11:0 :::: P11_QUESTION_ID:6263249199595 – Aditya