Получение значения xml продолжает возвращать NULL - PullRequest
0 голосов
/ 01 мая 2020

Так что, по сути, у меня есть некоторые данные, хранящиеся в таблице как XML. Однако я пытаюсь получить определенное значение c, но каждый раз, когда я пытаюсь это сделать, я получаю нулевое значение.

Я осмотрелся и просмотрел здесь несколько постов. Я предполагаю, что это как-то связано с пространством имен, но мне не повезло. Пример xml выглядит следующим образом:

<ns1:sometitle xmlns:ns1="http://address.com.au/some/address" rhboIsoNum="123456">
     <claim lengthOfStay="4">
     </claim>
  </ns1:onlineEligibilityCheckRequest>

Я пробовал приведенное ниже и множество других комбинаций, но я всегда получаю ноль, любая помощь будет отличной

    with XMLNAMESPACES (default 'http://address.com.au/some/address')
select 
    t.xmlconvert.value('(sometitle/claim/lengthOfStay)[1]','varchar(20)') cola
    from #test t

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Если вы используете oracle базу данных, вы можете использовать ниже

      create table t(data1 xmltype);  

    INSERT INTO t
    VALUES     ( Xmltype('<ns1:onlineEligibilityCheckRequest 
             xmlns:ns1="http://address.com.au/some/address"  
      rhboIsoNum="123456">
         <claim lengthOfStay="4">
         </claim>
      </ns1:onlineEligibilityCheckRequest>')); 

Затем выберите данные, используя следующую инструкцию

    SELECT Extractvalue(VALUE(p), '/claim/@lengthOfStay[1]')
    FROM   t,
           table(Xmlsequence(Extract((data1),
           '//ns1:onlineEligibilityCheckRequest/claim',
           'xmlns:ns1="http://address.com.au/some/address"'))) p; 
0 голосов
/ 01 мая 2020

lengthOfStay является атрибутом, а не дочерним элементом, поэтому вы хотите sometitle/claim/@lengthOfStay

Кроме того, sometitle находится в пространстве имен, а claim - нет, поэтому их нужно обрабатывать по-разному. , но я не знаком с синтаксисом SQL "с XMLNAMESPACES", поэтому не могу вас проконсультировать по этому поводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...