PL SQL的序列

时间:2011-11-29 23:36:11

标签: sql database oracle plsql

我知道如何在pl sql中创建一个序列。但是,我如何将值设置为3个数字呢?在创建序列时是否还有另一个sql语句?

所以一个例子是:

000
001
012
003

谢谢你们!

3 个答案:

答案 0 :(得分:8)

首先,为了清楚起见,您不要在PL / SQL中创建序列。您只能在SQL中创建序列。

其次,如果您希望列只存储三位数,则需要数据类型为VARCHAR2(或其他一些字符串类型),而不是更常见的NUMBER,因为{{{根据定义,1}}不存储前导零。当然,你可以这样做,但这很不寻常。

也就是说,您可以使用“fm009”格式掩码从数字序列中生成一个正好有3个字符的字符串(需要“fm”位以确保您不会获得额外的空格 - 您可以{ {1}} NUMBER调用的结果也可以省去掩码的“fm”位。

TRIM

答案 1 :(得分:3)

暂时没有使用过plsql,但这里有:

给出一个整数序列myseq,

to_char(myseq.nextval, '009')

答案 2 :(得分:0)

您也可以使用lpad功能。

在Oracle / PLSQL中,lpad函数使用一组特定字符填充字符串的左侧。

例如:

lpad('tech', 7);    would return '   tech'
lpad('tech', 2);    would return 'te'
lpad('tech', 8, '0');   would return '0000tech'
lpad('tech on the net', 15, 'z');   would return 'tech on the net'
lpad('tech on the net', 16, 'z');   would return 'ztech on the net'

在您的示例中,您将使用

 lpad('tech', 8, '0');  would return '0000tech'

即。如果字符串长度小于8个字符,则将0添加到字符串的开头,直到字符串长度为8个字符。

参考:http://www.techonthenet.com/oracle/functions/lpad.php

此外,要向右添加0,您可以使用rpad功能。