有些奇怪我想要理解
假设我们有这个代码:
DECLARE
a varchar2(6);
BEGIN
a := '000001';
END;
Run Code Online (Sandbox Code Playgroud)
这很好用.没问题
现在我们有了这个:
DECLARE
a varchar2(6);
BEGIN
a := TO_CHAR(1, '000000');
END;
Run Code Online (Sandbox Code Playgroud)
这是行不通的:
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
为什么?
nls_language有问题吗?什么问题?有什么办法?
谢谢
该TO_CHAR结果在开头一空间,使得其总长度为7个字符.如果数字为负数,则该空格保留为减号.如果您尝试此查询,您会看到:
SELECT '[' || TO_CHAR(1, '000000') || ']' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
结果是:
[ 000001]
^ space for a minus sign
Run Code Online (Sandbox Code Playgroud)
要获得没有空格的结果,请使用FM修饰符:
a := TO_CHAR(1, 'FM000000');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |