У меня есть база данных, в которой хранятся результаты форм в столбце XML. К сожалению, он также сохраняет некоторые дополнительные символы в начале, которые не могут быть непосредственно проанализированы, поэтому мне нужно удалить их до разбора значений. Другое ограничение, которое у меня есть, заключается в том, что система, которую я использую для отображения отчетов (Xtraction), позволяет запускать подзапросы.Возврат выбранного значения из раскрывающегося списка XML в подзапросе SQL
Несмотря на все эти ограничения, у меня есть успешный метод получения текстовых значений из поля 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