Ram*_*ada 5 oracle numbers zero leading-zero
我有一个oracle列(artnr)包含长度为1的类型为number(9).我想更新数字如下......
示例:
如果number为0则为00000如果number为1则为00001如果number为12则应为00012
记住:这里00000,0000和00012是数字数据类型
以下是我尝试但失败的方法..
UPDATE pitb.toestel b
SET b.artnr = LPAD (b.artnr, 5, 0)
WHERE b.idinventaris = 403743;
Run Code Online (Sandbox Code Playgroud)
失败,因为Lpad只能应用于字符串
UPDATE pitb.toestel b
SET b.artnr = TO_NUMBER (TO_CHAR (artnr, '00009'), '00009')
WHERE b.idinventaris = 403743;
Run Code Online (Sandbox Code Playgroud)
仍然失败,因为to_number不会显示前导零.它只考虑第一个数字
任何人,你能不能给我一些能解决这个问题的方法.
sql比pl/sql解决方案更受欢迎
Lal*_*r B 10
如果number为0则为00000如果number为1则为00001如果number为12则应为00012
记住:这里00000,0000和00012是数字数据类型
首先,Numbers没有前导零.因此,当您存储NUMBER值时,您会让它们表现得像NUMBER.只有当你想要显示它们时,你才能使用LPAD并添加前导零.将数字转换为带有前导零的字符串.
所以,不需要更新表.用于LPAD以您希望的方式显示它们.
SQL> WITH DATA AS
2 ( SELECT 1 ID FROM DUAL UNION ALL
3 SELECT 11 ID FROM DUAL
4 )
5 SELECT
6 LPAD(ID,5, 0) id
7 FROM DATA
8 /
ID
-----
00001
00011
Run Code Online (Sandbox Code Playgroud)
为避免隐式数据类型转换,请TO_CHAR在应用前使用LPAD.
| 归档时间: |
|
| 查看次数: |
31946 次 |
| 最近记录: |