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);
→ Ссылка