这是我的插入声明:
INSERT INTO PRODUCT
VALUES
('PROD010', 'Kiwi milk tea', 'A milk tea that made from kiwi powder and other ingredients.', 4.50, 5.00);
但是,屏幕上出现的是PROD010,猕猴桃奶茶,用猕猴桃粉和其他成分制成的奶茶,4.5和5
4.50和5.00的全部零都消失了。
那么,我现在该怎么办才能显示所有零?
产品代码表:
CREATE TABLE PRODUCT(
PROD_ID VARCHAR(10) NOT NULL,
PROD_NAME VARCHAR(30),
PROD_DESC VARCHAR(70),
R_UNIT_PRICE NUMBER(3,2),
L_UNIT_PRICE NUMBER(3,2),
primary key (PROD_ID)
);
答案 0 :(得分:2)
表格中没有任何内容可以让客户端显示尾随,无关紧要的零。 (至少在保持数字的同时;不要考虑将其存储为字符串)。数值以有效的内部格式存储。当客户端检索该值时,它将转换为客户端的natice数字格式,客户端决定如何显示它。
要在SQL * Plus等客户端中显示零,包括0.00
,您可以将其作为字符串检索:
select prod_id, prod_name, prod_desc,
to_char(r_unit_price, '0.00') as r_unit_price,
to_char(l_unit_price, '0.00') as l_unit_price
from product;
除非客户端应用程序执行自己的格式化,否则您需要在每个重要的查询中执行此操作。当您在计算中使用该值时,请将其作为数字使用,并将格式模型应用于最终的失败结果 - 否则您将在字符串之间进行无意义的隐式转换,并且错误的可能性。
您的数据类型非常严格 - 您的值不能超过10或更高。这可能是你想要的,但要查看Mihai所链接的精确度和尺度信息。
答案 1 :(得分:0)
select num, length(num) len, instr(num,separator) dot
,case when instr(num,separator) > 0 then length(num) - instr(num,separator) else 0 end as dot2
,case when instr(num,separator) > 0 then rpad(num,instr(num,separator)+2,0) else num||separator||'00' end as num2
from ( select ',' as separator from dual ) sep,
(
select 1.21 as num from dual union all
select 1.2 as num from dual union all
select 9 as num from dual union all
select 11.456 as num from dual union all
select 341.2 as num from dual
);
NUM LEN DOT DOT2 NUM2
1,21 4 2 2 1,21
1,2 3 2 1 1,20
9 1 0 0 9,00
11,456 6 3 3 11,45
341,2 5 4 1 341,20
NUM2
就是答案
更改分隔符可以使用逗号或点,具体取决于您的环境。