Мне нужно построить часть условий моего запроса sql из xml.Динамические условия построения запросов из XML?
У меня есть XML, как:
<ROOT>
<PARAMETROS>
<USU_LOGIN>yleon</USU_LOGIN>
<USU_NOMBREPRIMERO>Yerusha</USU_NOMBREPRIMERO>
<USU_APELLIDOPRIMERO>Leon</USU_APELLIDOPRIMERO>
<USU_EMAIL>[email protected]</USU_EMAIL>
<USU_FECHACREACION>20130510</USU_FECHACREACION>
<USU_CODICIONES1 TIPO="MC">AND USU_ID=4</USU_CODICIONES1>
<USU_CODICIONES2 TIPO="MC">AND USU_ID=5</USU_CODICIONES2>
<USU_CODICIONES3 TIPO="HG">AND USU_ID=9</USU_CODICIONES3>
...
<USU_CODICIONESN TIPO="MC">AND USU_ID=50</USU_CODICIONESN>
</PARAMETROS>
</ROOT>
Поэтому мне нужно, чтобы извлечь условия с атрибутом TIPO = "MC"; Я с этим кодом:
SELECT txt = T.Item.value('data(.)', 'varchar(255)')
FROM @xml.nodes('/ROOT/PARAMETROS/*') AS T(Item)
WHERE T.Item.value('data(@TIPO)', 'varchar(255)')='MC'
Теперь предположим, что мой запрос:
Select * from USUARIOS
where 1=1 USU_CODICIONES1 USU_CODICIONES2 .. USU_CODICIONESn
мне нужно заменить «@@ USU_CODICIONESX» зацикливание в XML, но не с помощью курсора, может быть КТР.
Ожидаемый результат:
Select * from USUARIOS
where 1=1 AND USU_ID=4 AND USU_ID=5 .. AND USU_ID=50
Хорошая попытка, но она должна заменить в исходном запросе маркер USU_CODICIONES1..USU _CODICIONESN для элементов xml USU_CODICIONES1..USU_CODICIONESN, они могут быть в другом порядке или в частях исходного запроса. – Artemination
Ответ обновлен. Повторите попытку –
Я думаю, что это как игра с огнем, в запросе может быть много других подвыборов, последняя часть при обратном + charindex + right не будет работать. – Artemination