powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / OPENXML
5 сообщений из 5, страница 1 из 1
OPENXML
    #39569492
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста,

делаю select из XML
FROM OPENXML(@hDoc, 'Root/Row')

можно ли сделать что бы сервер не чувствовал регистр букв в 'Root/Row'?

сейчас, если в файле XML 'root/Row', то в данном случае читаться не будет...

Заранее благодарен.
...
Рейтинг: 0 / 0
OPENXML
    #39569495
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,
читали справочку?
https://docs.microsoft.com/en-us/sql/t-sql/functions/openxml-transact-sql


бесчувственный сервер
...
Рейтинг: 0 / 0
OPENXML
    #39569505
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahможно ли сделать что бы сервер не чувствовал регистр букв в 'Root/Row'?Разве это не стандарт XML, то есть Root и root - это разные ноды?
...
Рейтинг: 0 / 0
OPENXML
    #39569508
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahделаю select из XML
FROM OPENXML(@hDoc, 'Root/Row')

можно ли сделать что бы сервер не чувствовал регистр букв в 'Root/Row'?

сейчас, если в файле XML 'root/Row', то в данном случае читаться не будет...
XML сам по себе регистрозависимый.
...
Рейтинг: 0 / 0
OPENXML
    #39569544
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML, как уже выше писали, по стандарту регистрозависим, но можно
1): не использовать имена тэгов, а использовать только относительное расположение:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare
  @x xml='
  <data>
    <Root><Row name="A"/></Root>
    <root><row name="B"/></root>
    <ROOT><ROW name="C"/></ROOT>
  </data>',
  @h int;
exec sp_xml_preparedocument @h out, @x;
select * from openxml(@h, '/*/*/*', 1) with(name varchar(1))
exec sp_xml_removedocument @h;


2) Обращаться к нодам по local-name c приведением регистра (которого отдельной функцией в XPath 1.0 нет):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare
  @x xml='
  <data>
    <Root><Row name="A"/></Root>
    <root><row name="B"/></root>
    <ROOT><ROW name="C"/></ROOT>
  </data>',
  @h int;
exec sp_xml_preparedocument @h out, @x;
select * from openxml(@h,
  '/*/*[translate(local-name(.), "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")="ROOT"]/*[translate(local-name(.), "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")="ROW"]'
  , 1) with(name varchar(1))
exec sp_xml_removedocument @h;


3) Если имя с гуляющим регистром есть в colpattern, то не поможет ни первое, ни второе:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare
  @x xml='
  <data>
    <Root><Row>A</Row></Root>
    <root><row>B</row></root>
    <ROOT><ROW>C</ROW></ROOT>
  </data>',
  @h int;
exec sp_xml_preparedocument @h out, @x;
select * from openxml(@h, '/*/*', 2) with([row] varchar(1))
exec sp_xml_removedocument @h;


P.S. Там XML на вход люди руками что ли пишут, что у него гуляет регистр?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / OPENXML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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