我知道如何在 pl sql 中创建一个序列。但是,我如何将值设置为全部有 3 位数字?当我创建一个序列时,是否有另一个 sql 语句来执行此操作?
举个例子:
000
001
012
003
谢谢大家!
最佳答案
首先,明确一点,您不在 PL/SQL 中创建序列。您只能在 SQL 中创建序列。
其次,如果您希望一列恰好存储三位数字,您需要将数据类型设置为 VARCHAR2
(或其他一些字符串类型),而不是更常见的 NUMBER
因为 NUMBER
根据定义不存储前导零。当然,您可以这样做,但这很不寻常。
就是说,您可以使用“fm009”格式掩码从数字序列中生成一个恰好包含 3 个字符的字符串(需要“fm”位以确保您不会获得额外的空格——您可以 TRIM
TO_CHAR
调用的结果,并免除掩码的“fm”位)。
SQL> create table t( col1 varchar2(3) );
Table created.
SQL> create sequence t_seq;
Sequence created.
SQL> ed
Wrote file afiedt.buf
1 insert into t
2 select to_char( t_seq.nextval, 'fm009' )
3 from dual
4* connect by level <= 10
SQL> /
10 rows created.
SQL> select * from t;
COL
---
004
005
006
007
008
009
010
011
012
013
10 rows selected.
关于sql - 使用 PL SQL 的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319315/