在PL / SQL上的数字字段中保持前导零

时间:2017-06-09 13:37:38

标签: sql oracle

我想保留主题所说的前导零。这是我的例子:

    CREATE OR REPLACE VIEW TEST_VIEW AS
    SELECT '00025' NUMBER1, 05 NUMBER2
    FROM DUAL;

我希望NUMBER1和NUMBER2以VARCHAR格式存储为00025和05但是当我点击查询时它会将其存储为25和5。

我希望我能解释一下我的问题并等待回复。

5 个答案:

答案 0 :(得分:0)

此查询:

CREATE OR REPLACE VIEW TEST_VIEW AS
    SELECT '00025' as NUMBER1, '05' as NUMBER2
    FROM DUAL;

应将NUMBER1NUMBER2存储为字符串。字符串应该有前导零。也许您查询数据的方式存在问题。

答案 1 :(得分:0)

您的第二个号码附近缺少''。第一个数字应该已经存储为varchar。

答案 2 :(得分:0)

视图只是一个存储的SQL语句,不会保留任何数据 当我运行你的SQL然后从测试视图中选择时,它按预期返回:引用的字符串作为字符串返回,并且数字作为数字返回(前导零被修剪)。

select * from test_view;

NUMBER1  NUMBER2
-------  -------
00025          5

Oracle中数字字段中的前导零被视为格式化,除非要求格式化单行函数,否则不会提供格式,例如:

select number1, lpad(number2, 2, '0') number2 from test_view;

NUMBER1  NUMBER2
-------  -------
00025    05

答案 3 :(得分:0)

  

"如果有可能的话,我只想以000BER格式存储00025"

不可能,Numbers以NUMBER格式存储,并且在没有前导零的情况下呈现。你想保留前导零,然后你需要将它们存储为字符串。这是因为数字'05' != '5' != '005'只是字符串select lpad(to_char(25), 5 , '0') as number1 , lpad(to_char(5), 2 , '0') as number2 from dual

或者您可以将此作为显示问题处理。将它们存储为数字,但在查询时将它们转换为字符串:

{{1}}

答案 4 :(得分:-1)

确认Gordon,Jacob和Sudibta所说的话,无论如何你想要转换数字并加上前导零,你可以使用:

SELECT SUBSTR('0000' || CAST(25 AS VARCHAR(5)),-5) AS NUM_LD_Z FROM DUAL