oracle序列
创建序列
create sequence seq_test_1 //创建序列名称 minvalue 1 //最小值 maxvalue 100000 //最大值 start with 15 //序列起始值,递增默认是minvalue,递减默认是maxvalue increment by 1 //递增的序列值是n,如果n是正数就递增,如果是负数就递减 默认是1 nocache; //分配并存入内存中:否 nocycle; //不循环
返回序列中下一个有效的值,任何用户都可以引用
SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL; eg:select seq_test_1.nextval from dual;
返回序列当前的值
SELECT SEQUENCE_NAME.CURRVAL FROM DUAL; eg:select seq_test_1.CURRVAL from dual;
使用场景,实现id的自增
# 建表 create table cdpt( id number(6), name varchar2(30), constraint pk_id primary key(id) ); # 创建序列 Create sequence seq_cdpt Increment by 1 Start with 1 Maxvalue 999999 Minvalue 1 Nocycle nocache # 实现主键自增 insert into cdpt values(seq_cdpt.nextval,'weifan'); # 查询验证 select * from cdpt;
修改序列,删除序列
Alter SEQUENCE xxx; Drop SEQUENCE xxx;
实际应用(八位xx号,不足补零)
mapper
@MyBatisRepository public interface PmcmoMapper { /*新增xx创建序列号*/ void createSeq(@Param("seq_orgxx_cuid")String seq_orgxx_cuid); String getSeq(@Param("seq_orgxx_cuid")String seq_orgxx_cuid,@Param("length")String length,@Param("cover")String cover); }
xml
create sequence ${seq_orgxx_cuid} minvalue 1 maxvalue 99999999 start with 1 increment by 1 cache 10 select lpad(${seq_orgxx_cuid}.nextval,${length}, ${cover}) from dual
oracle lpad函数
语法格式如下: lpad( string, padded_length, [ pad_string ] ) string 准备被填充的字符串; padded_length 填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符; pad_string 填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。
oracle rpad函数
与lpad函数对应的是rpad函数: rpad函数从右边对字符串使用指定的字符进行填充,语法格式与lpad格式相同: rpad(string,padded_length,[pad_string]) string 被填充的字符串 padded_length 字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符; pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。