Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3990 |
Есть таблица, вней одно из полей tx nvarchar(MAX) но содержит по идее xml. Сделал выборку похоже, что некоторые испорчены как хмл, то ли клиент пишет криво, то ли х.е.з. Как можно запросом валидировать поля с хмл, чтобы выбрать записи, где хмл, а где - что-то испорченное? |
27 июн 17, 15:25 [20594159] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
Ролг Хупин,try_convert(..) is null |
27 июн 17, 15:28 [20594179] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3990 |
а запросом, массово по всем записям? |
||
27 июн 17, 17:38 [20594657] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3990 |
да, сам не ожидал ![]() |
||
27 июн 17, 18:29 [20594776] Ответить | Цитировать Сообщить модератору |
Сон Веры Павловны Member Откуда: Сообщений: 6129 |
Это не валидация, это проверка на well-formed. Валидация XML - это несколько другое. |
28 июн 17, 06:06 [20595551] Ответить | Цитировать Сообщить модератору |
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 | ![]() |