嗯 我现在用oracle 的数据库 现在有一表A 里面有一VARCHAR2(5)类型的...
发布网友
发布时间:2022-04-27 04:20
我来回答
共3个回答
热心网友
时间:2022-04-13 17:03
先将最大的id转换成number,在获取出来,加1后转化为char就行了。语句如下:
insert into A (id) values (to_char(max(to_number(id)) + 1));
不过这个语句新插入的数据左端是没有‘0’的,如果需要左端用“0”补齐,需要这样写:
insert into A (id) values (lpad( to_char(max(to_number(id)) + 1)), 5, '0');
热心网友
时间:2022-04-13 18:21
楼主需要掌握两个函数的用法:to_number和lpad。
1)to_number 可将字符类转为数字类;
例:to_number('00003')=3;
转为数字之后便可以进行加减运算了。
2)那么如何将4变为“00004”呢?要用lpad函数。
lpad用法
lpad(字段名,填充长度,填充的字符)
例:lpad(4,5,'0')=00004。
希望解释的还算清晰。
热心网友
时间:2022-04-13 19:56
如果是那种前台添加记录 数据库ID自动增加的 就需要用触发器以及创建一个序列
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
CREATE TRIGGER "触发器名称" BEFORE
INSERT ON 表A FOR EACH ROW WHEN (new.id is null)
begin
select emp_sequence.nextval into: new.id from al;
end;