Db2

db2 11.1 中 XML 中十進制數據的字元串格式中缺少小數點前的前導零

  • May 12, 2020

在 Db2 11.1 中生成包含十進制值的 XML 時,將刪除小數點前的前導零。

在下面的查詢中,十進制值 .00000000000000 被發布,即使它應該來自XMLELEMENT函式的 0.00000000000000。

SELECT XMLElement(
 NAME "keytable",
 XMLAGG(
   XMLELEMENT(
     NAME "tab", 
     XMLAttributes( interp as "interp")
   )
 ) OPTION null ON NULL
) 
FROM abc where wkstn_oid_sh = 100 AND wkstn_oid_lng = 4211"

正確的結果應該是:

<KEYTABLE><TAB INTERP="0.00000000000000"/><TAB INTERP="0.00000000000000"/> </KEYTABLE>. 

但目前 db2 返回:

<KEYTABLE><TAB INTERP=".00000000000000"/><TAB INTERP=".00000000000000"/></KEYTABLE>.

如何將小數格式化為 0.00000000000000?

如果您的消費者對數字格式非常敏感並且無法解釋沒有前導零的值,您可以明確格式化您的數值:

...xmlattributes(varchar_format(interp,'S00.00000000') as "interp")

將以下內容用於DEC(X, 14):

LTRIM(TO_CHAR(interp, '990.99999999999999'))而不是interp.

小數點左邊的9’ 數應該等於X - 14 - 1

該範例顯示為 X = 17。

引用自:https://dba.stackexchange.com/questions/266979