Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XML sql:column / 7 сообщений из 7, страница 1 из 1
17.03.2020, 14:39
    #39938281
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Здравствуйте!
MS SQL SERVER 2017

таблица вида:
Код: sql
1.
create table tst (id [int] identity(1,1) NOT NULL, fv [xml], FieldNameID [varchar(50)])


как сделать запрос вида:
Код: sql
1.
2.
SELECT FieldNameID, fv.value('(/Rec/@' + FieldNameID + ')[1]','int') AS ValueID
FROM tst 


пробовал так, но ошибка синтаксиса
Код: sql
1.
2.
SELECT FieldNameID, fv.value('(/Rec/@*[local-name() = sql:column("FieldNameID")])[1]','int') AS ValueID
FROM tst 
...
Рейтинг: 0 / 0
17.03.2020, 14:56
    #39938290
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Извините ))) все работает. запутался маленько
...
Рейтинг: 0 / 0
17.03.2020, 14:59
    #39938295
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Алексаша
пробовал так, но ошибка синтаксиса
Код: sql
1.
2.
SELECT FieldNameID, fv.value('(/Rec/@*[local-name() = sql:column("FieldNameID")])[1]','int') AS ValueID
FROM tst 


таа ладно :)

Код: sql
1.
2.
3.
4.
5.
6.
drop table if exists tst
create table tst (id [int] identity(1,1) NOT NULL, fv [xml], FieldNameID varchar(50))
insert into tst (fv, FieldNameID) values ('<Rec AvtoID="1" FaceID="2"/>','FaceID'), ('<Rec AvtoID="1"/>','FaceID')

SELECT FieldNameID, fv.value('(/Rec/@*[local-name() = sql:column("FieldNameID")])[1]','int') AS ValueID
FROM tst 
...
Рейтинг: 0 / 0
17.03.2020, 18:04
    #39938391
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Вырисовалась другая проблема...
Не знаю правильно ли решил тут продолжить.
В целом запрос работает как надо
Код: sql
1.
2.
SELECT FieldNameID, fv.value('(/Rec/@*[local-name() = sql:column("FieldNameID")])[1]','int') AS ValueID
FROM tst 


но если значение поля FieldNameID = 'FaceID', а в структура XML атрибут называется Faceid то метод возвращает NULL. Что посоветуете?
...
Рейтинг: 0 / 0
17.03.2020, 18:14
    #39938397
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Алексаша,

Код: sql
1.
2.
SELECT FieldNameID, fv.value('(/Rec/@*[lower-case(local-name()) = lower-case(sql:column("FieldNameID"))])[1]','int') AS ValueID
FROM @tst
...
Рейтинг: 0 / 0
18.03.2020, 09:45
    #39938549
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
invm,

Спасибо, работает. Только вот скорость заметно падает на 13000 записях к сожалению
...
Рейтинг: 0 / 0
18.03.2020, 09:49
    #39938554
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML sql:column
Алексаша
Только вот скорость заметно падает
Тогда делайте так - 22100465
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XML sql:column / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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