DB2 SQL将十进制转换为带零的字符填充

mac*_*nte 14 sql db2

如何将DB2 DECIMAL(11)从12345678转换为字符值00012345678

kel*_*iin 17

仅使用该 DIGITS函数,因为这会验证字段数字或小数等的长度,并在必要时以左边的零结束.

SELECT DIGITS(FIELD) FROM ...
Run Code Online (Sandbox Code Playgroud)


bha*_*mby 10

根据你在@Mr Fuzzy Botton的答案中的评论,我猜你正在进行DB2 for i,它没有这个LPAD功能.您可以改为使用REPEATRIGHT函数的组合:

SELECT RIGHT(REPEAT('0', 11) || LTRIM(CHAR(your_field)), 11)
FROM your_table
Run Code Online (Sandbox Code Playgroud)


AjV*_*Jsy 9

有关CAST 和http://pic.dhe.ibm.com的详细信息,请使用http://pic.dhe.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db2.doc.sqlref/castsp.htm./infocenter/dzichelp/v2r2/topic/com.ibm.db2z10.doc.sqlref/src/tpc/db2z_scalarfunctionsintro.htm对于字符串函数, 我认为这应该可以做到 -

SELECT LPAD( CAST(FIELD AS CHAR(11)) ,11,'0') AS PADDEDFIELD


Ada*_*11p 1

我的 LeftPad 功能没有 LeftPad 功能

 REPEAT('0', 4-length(MY_COLUMN_VALUE))||CHAR(MY_COLUMN_VALUE) as NEW_COLUMN

MY_COLUMN_VALUE NEW_COLUMN
1               0004
23              0023
Run Code Online (Sandbox Code Playgroud)

测试...

SELECT '32' MY_VALUE, REPEAT('0', 4-length('23'))||CHAR('23') as LEFTPAB_MY_VALUE FROM sysibm.sysdummy1
Run Code Online (Sandbox Code Playgroud)