我有一個數據庫,它將表單的結果存儲在XML列中。不幸的是,它在開始時還存儲了一些額外的字符,不能直接解析,所以我需要在解析值之前將其刪除。另一個限制是我用來顯示報告的系統(Xtraction)只允許子查詢運行。從SQL子查詢中的XML下拉列表中返回選定的值
儘管所有這些限制,我有一個成功的方法來從XML字段獲取文本值,但我似乎無法將其應用於從下拉列表中選擇的值。我的方法不僅返回所選值,還返回所有下拉選項以及非分隔字符串。
由於形式是非常大的,我已刪除比多餘的字符和下面的XML的下拉部分中的其他一切:
_RCFM*=.hÞ<form><select id="Dropdown01" label="Substantive APS Level:"
mandatory="true" readonly="false" style="combo" type="string"
visible="true">EL1<option label=""/><option
label="APS5">APS5</option><option label="APS6">APS6</option><option
label="EL1">EL1</option></select></form>
我使用子查詢:
(SELECT
x.CARTITEMID
, x.DROPDOWN01
FROM (
SELECT
CARTITEMID
, CAST(RIGHT(cast(cast(SVCCARTITEMM1.OPTIONS as varbinary(max)) as varchar(max)),
LEN(cast(cast(SVCCARTITEMM1.OPTIONS as varbinary(max)) as varchar(max)))
-CHARINDEX('<form>',cast(cast(SVCCARTITEMM1.OPTIONS as varbinary(max)) as varchar(max)))+1)
AS XML).value('(/form/select[@id="Dropdown01"])[1]', 'varchar(max)')[DROPDOWN01]
FROM SVCCARTITEMM1) x
)
從上面的子查詢的結果是: EL1APS5APS6EL1
我需要只返回選定的文本,在這種情況下,從這個例子中的初始'EL1'串。
請注意,從CAST到'AS XML'的代碼通常是字段引用的位置,這是我用來轉換和刪除前面提到的主要字符的地方。
請幫助,我真的很努力地找到解決這個相當模糊的問題。
SVCCARTITEMM1.OPTIONS的數據類型是什麼? – Shnugo