0

特定の列名の値を丸めるクエリがあります。

  select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse]

ここで、[CIMtrek_CI_Act_33]はnullではなく、CIMtrek_CIMtrekUniqueID = 1917

そして結果は

CI
1

しかし、私が次のクエリを実行すると:

(SELECT  (SELECT [T1].[CIMtrek_CIMtrekUniqueID]  AS [CIMtrek_CIMtrekUniqueID]
,round([T1].[CIMtrek_CI_Act],0)   AS [CIMtrek_CI_Act]
 FROM [CIMtrek_SystemTable_DatawareHouse] T1 
 WHERE T1.CIMtrek_CIMtrekUniqueID = 1917 
 FOR  XML PATH('Record'), TYPE )) FOR XML PATH('Root')

結果は

<Root>
  <Record>
    <CIMtrek_CIMtrekUniqueID>1917</CIMtrek_CIMtrekUniqueID>
    <CIMtrek_CI_Act>1.000000000000000e+000</CIMtrek_CI_Act>
  </Record>
</Root>

値は丸められません。

値が10.58私が取得する必要があるよりも大きい場合11。また、フィールドvarcharには、値がない場合は、emptyよりも文字列を取得する必要があります0

私がここで犯した間違いは何ですか、そして同じものを修正する方法

4

1 に答える 1

3

丸められます。表示されるのは、SQLServerのXMLテキスト表現ですfloat

それが気に入らない場合は、丸め後に整数にキャストしてください。

cast(round([T1].[CIMtrek_CI_Act],0) as int)
于 2013-03-01T11:24:42.397 に答える