SQL XML. Запрос, где нужно получить дробное число с точкой
Исходные данные
<catalogs>
<block>
<id>111</id>
<type>vision</type>
<name>name_1</name>
<parent_id>22.123</parent_id>
</block>
</catalogs>
Невозможно получить значение 'parent_id', проблема в том, что число не целое, с точкой. Как правильно написать запрос чтобы получить число '22.123'? convert, cast, int, float, number(9,2) не работают
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
Вот как обращаться с такими числами.
SQL
DECLARE @xml XML =
N'<catalogs>
<block>
<id>111</id>
<type>vision</type>
<name>name_1</name>
<parent_id>22.123</parent_id>
</block>
</catalogs>';
SELECT c.value('(id/text())[1]', 'INT') AS id
, c.value('(type/text())[1]', 'VARCHAR(20)') AS [type]
, c.value('(name/text())[1]', 'VARCHAR(20)') AS [name]
, c.value('(parent_id/text())[1]', 'DECIMAL(10,3)') AS parent_id
FROM @xml.nodes('/catalogs/block') AS t(c);