Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сортировать вложенные xml теги без явного указания их имен с помощью XQuery? / 2 сообщений из 2, страница 1 из 1
19.05.2019, 13:44
    #39814985
Wigggi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сортировать вложенные xml теги без явного указания их имен с помощью XQuery?
У меня получается сортировать только по одному уровню:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
DECLARE @myxml xml = ' 
<root> 
  <lev1_2>
      <lev2_8/> 
      <lev2_5/> 
  </lev1_2> 
  <lev1_3/> 
  <lev1_2> 
      <lev2_7/> 
      <lev2_3/> 
  </lev1_2>
  <lev1_1/>  
</root> 
' 

SET @myxml =@myxml.query(' 
  <root> {
    for $k1 in (/*/*) 
    order by fn:local-name($k1) 
    return $k1
  } 
  </root>
')
...
Рейтинг: 0 / 0
20.05.2019, 11:41
    #39815272
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сортировать вложенные xml теги без явного указания их имен с помощью XQuery?
Wigggi,

извращение какое-то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
DECLARE @myxml xml = ' 
<root> 
  <lev1_2>
      <lev2_8/> 
      <lev2_5/> 
  </lev1_2> 
  <lev1_3/> 
  <lev1_2> 
      <lev2_7/> 
      <lev2_3/> 
  </lev1_2>
  <lev1_1/>  
</root> 
'
DECLARE @mydata NVARCHAR(MAX) = CONVERT( NVARCHAR(MAX), @myxml ) 
;
CREATE TABLE #t ( [node] VARCHAR(10), [src] VARCHAR(MAX), [new] NVARCHAR(MAX) )
;
INSERT
INTO
  #t
SELECT
  [node]  = CONVERT( VARCHAR(10), t.x.value( 'fn:local-name(.)', N'VARCHAR(10)' ) ),
  [src]   = CONVERT( VARCHAR(MAX), t.x.query( '.' ) ),
  [new]   = CONVERT( VARCHAR(MAX), t.x.query( 'for $k1 in (./*) 
    order by fn:local-name($k1) 
    return $k1' ) )
FROM
  @myxml.nodes( '//*' ) t( x )
;
SELECT
  @mydata = REPLACE( @mydata, [src], '<' + [node] + '>' + [new] + '</' + [node] + '>' )
FROM
  #t
;
SELECT
  CONVERT( XML, @mydata )
;
DROP TABLE #t
;
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сортировать вложенные xml теги без явного указания их имен с помощью XQuery? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]