Oracle SQL Developer中TO_CHAR函数返回#符号问题求助
Oracle SQL Developer中TO_CHAR后列显示'#'的解决思路
问题本质:当
TO_CHAR生成的字符串长度超过SQL Developer对应列的显示宽度,或者格式模型的长度不足以容纳转换后的数值时,就会用#填充显示。比如原数值的整数部分过长,加上小数位、小数点后的总长度超出了设置的列宽或格式模型限定的长度。具体解决方法:
- 临时调整列显示宽度:在查询结果面板中,直接拖动目标列的标题边缘,拉宽列的显示区域,即可查看完整内容。
- 优化TO_CHAR的格式模型:
- 不要依赖默认格式,根据实际数值范围明确指定足够的长度。例如原语句用
TO_CHAR(amount, '999.99'),若存在整数部分超过3位的数值,就会溢出显示#,可修改为TO_CHAR(amount, '99999.99')(增加整数位的9数量,匹配最大数值的整数位数); - 搭配
FM修饰符去除前导空格,节省显示长度,比如TO_CHAR(amount, 'FM99999.00'),既保证小数位固定,又减少不必要的空格占用;
- 不要依赖默认格式,根据实际数值范围明确指定足够的长度。例如原语句用
- 排查异常数值:查询显示#的记录的原始数值,确认是否存在超大整数的情况,比如数值为100000,而格式模型仅支持5位整数,这种情况必须调整格式模型的整数位长度;
- 修改SQL Developer默认列宽:若频繁遇到这类问题,可通过
工具->偏好设置->数据库->工作表,找到默认列宽度选项,调大数值后保存,重启工具生效。
内容的提问来源于stack exchange,提问作者lse23
相关产品推荐
相关产品推荐

