我知道如何在pl sql中创建一个序列。但是,我如何将值设置为3个数字呢?在创建序列时是否还有另一个sql语句?
所以一个例子是:
000
001
012
003
谢谢你们!
答案 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功能。