ДЛЯ XML EXPLICIT и Precision - PullRequest
       1

ДЛЯ XML EXPLICIT и Precision

1 голос
/ 01 августа 2011

Допустим, у меня есть следующие данные, которые я хочу использовать в своем запросе FOR XML EXPLICIT:

ItemId:  14528097
ProductId:  7575
Revenue:  12.95
PerItemPrice:  12.95
Quantity: 1

Теперь, когда я пишу свой запрос, я получаю следующий вывод:

    <ItemId>14528097</ItemId>
    <ProductId>7575</ProductId>
    <Revenue>12.9500</Revenue>
    <PerItemPrice>1.295000000000000e+001</PerItemPrice>
    <Quantity>1.000000000000000e+000</Quantity>

Есть ли способ получить его так, чтобы он выглядел так:

    <ItemId>14528097</ItemId>
    <ProductId>7575</ProductId>
    <Revenue>12.9500</Revenue>
    <PerItemPrice>12.95</PerItemPrice>
    <Quantity>1</Quantity>

Или мне не повезло?

Ответы [ 3 ]

2 голосов
/ 01 августа 2011

Похоже, что a1ex07 опередил меня, но я подозревал, что вы используете FLOAT или REAL (намеренно или случайно), и я предлагаю использовать DECIMAL всегда для числовых значений, которые явно не нуждаются в свойства FLOAT / REAL.

0 голосов
/ 01 августа 2011

Сравните результат использования столбца с плавающей запятой и десятичного столбца.

Float ...

create table #testfloat (a float)
insert into #testfloat values (1)
select * from #testfloat for xml auto
drop table #testfloat

<a="1.000000000000000e+000"/>

А теперь с десятичным типом ...

create table #testdec (a decimal(5,2))
insert into #testdec values (1)
select * from #testdec for xml auto
drop table #testdec

<a="1.00"/>
0 голосов
/ 01 августа 2011

Этот запрос работает нормально, поэтому убедитесь, что ваши типы правильно приведены:

declare @t table (
    ItemId varchar(10),
    ProductId varchar(5),
    Revenue decimal(9,2),
    PerItemPrice decimal(9,2),
    Quantity int)

insert into @t select '14528097','7575',12.95,12.95,1

select 1 as 'Tag', NULL as 'Parent', 
    NULL as 'Items!1!',
    NULL as 'Item!2!Item',
    NULL as 'Item!2!Revenue'
union
select 2, 1, NULL, ItemId, Revenue
from @t for xml explicit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...