需求:生成交易流水号,每次新增一条记录时都自动加1,且流水号形式为000000001形式的10位数字。

思路:利用序列可以生成自增的流水号,只需要在前面添加N个0即可,同时,由于数字的长度一定,因此可以组合使用序列和lpad()函数满足此需求

代码如下:

--生成序列
create sequence SEQ_TEST--序列名称
  increment by 1 --增长量
  start with 1 --起始数
  minvalue 1
  cache 20;SELECT SEQ_TEST.Nextval FROM dual;       --序列的两个方法:nextval、currval
SELECT SEQ_TEST.currval FROM dual; DROP SEQUENCE SEQ_TEST; --删除序列
SELECT LPAD(SEQ_TEST.nextval,10,'') FROM dual; --查询生成序列的效果,具体使用可自行修改

补充:

  lpad函数是Oracle数据库函数,lpad函数从左边对字符串使用指定的字符进行填充。从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思。

语法格式如下:
  lpad( string, padded_length, [ pad_string ] )
说明:

  string  准备被填充的字符串;

  padded_length  填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
  pad_string        填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。

摘自:http://www.linuxidc.com/Linux/2013-11/92828.htm

05-04 09:16