Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как можно валидировать XML поля?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3675
Есть таблица, вней одно из полей

tx nvarchar(MAX)

но содержит по идее xml.
Сделал выборку похоже, что некоторые испорчены как хмл, то ли клиент пишет криво, то ли х.е.з.

Как можно запросом валидировать поля с хмл, чтобы выбрать записи, где хмл, а где - что-то испорченное?
27 июн 17, 15:25    [20594159]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Ролг Хупин,

try_convert(..) is null
27 июн 17, 15:28    [20594179]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3675
Minamoto
Ролг Хупин,

try_convert(..) is null



а запросом, массово по всем записям?
27 июн 17, 17:38    [20594657]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Ролг Хупин, o_O

От вас даже как то не ожидал такого.

select * from table where field is not null and try_cast(field as xml) is null
27 июн 17, 18:14    [20594750]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3675
Minamoto
Ролг Хупин, o_O

От вас даже как то не ожидал такого.

select * from table where field is not null and try_cast(field as xml) is null


да, сам не ожидал
27 июн 17, 18:29    [20594776]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5926
Это не валидация, это проверка на well-formed. Валидация XML - это несколько другое.
28 июн 17, 06:06    [20595551]     Ответить | Цитировать Сообщить модератору
 Re: Как можно валидировать XML поля?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Сон Веры Павловны, вы правы, но по описанию речь шла как раз о проверке на правильную сформированность, я скрипт для этой цели и написал. Валидность так проверить не удается, падает даже на try_cast'е:

create xml schema collection rootOnly
as '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="root">
		<xsd:complexType></xsd:complexType>
    </xsd:element>
</xsd:schema>'
go

declare @t table (val nvarchar(max));

insert into @t values ('<root></root>'), ('<root></root'), ('<root1></root1>'), ('<root><row></row></root>');

select * from @t where val is not null and try_cast(val as xml) is null;

select * from @t as t where t.val is not null and try_cast(val as xml(rootOnly)) is not null;

go

drop xml schema collection rootOnly;
28 июн 17, 09:52    [20595720]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить