Db2
db2 11.1 中 XML 中十進制數據的字元串格式中缺少小數點前的前導零
在 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。