Oracle SQL*Plus XE 11g列显示#########的问题求助
解决SQL*Plus中数字列显示########及表格格式混乱的问题
问题根源
你给数字类型的vehicle_id列用了字符格式符Axx,这是错误用法。FORMAT A系列是给VARCHAR2这类字符列设置显示宽度的,数字列得用数字格式符,用错格式会导致SQL*Plus无法正确渲染数字,直接显示########。
正确解决步骤
修正vehicle_id的格式命令
针对NUMBER类型的列,使用9或0开头的数字格式符:- 如果你的vehicle_id是个位数/两位数,用:
COLUMN vehicle_id FORMAT 999 - 如果id可能更长(比如最多5位),就用:
COLUMN vehicle_id FORMAT 99999
(
9代表可选数字位,0代表强制显示的占位符,比如FORMAT 000会把id=1显示成001,按需选择)- 如果你的vehicle_id是个位数/两位数,用:
优化其他列格式,解决整体表格混乱
给其他列也设置合适的显示宽度,避免换行或列宽溢出:-- 给v_type设置20字符宽度,防止内容换行 COLUMN v_type FORMAT A20 -- 给v_price设置带两位小数的数字格式,匹配DECIMAL(10,2)类型 COLUMN v_price FORMAT 9999999999.99执行完这些命令后再运行
SELECT * FROM Vehicles;,表格格式就会整齐。
额外提醒:你的INSERT语句存在错误
你创建的Vehicles表只有3列(vehicle_id、v_type、v_price),但INSERT语句里写了4个值(比如(1, 'Car', 'Limousine', 67113480)),这会导致插入失败,需要修正INSERT语句匹配表结构,同时注意INSERT ALL必须以SELECT * FROM DUAL;结尾才能执行:
INSERT ALL INTO Vehicles VALUES (1, 'Car', 67113480) INTO Vehicles VALUES (2, 'Car', 19000000) SELECT * FROM DUAL;
内容的提问来源于stack exchange,提问作者NeOx
相关产品推荐
相关产品推荐

