oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?

例如 SD000001 这样的编号 然后每次插入数据的时候,编号的尾数都会递增

第1个回答  推荐于2017-09-23
排序的话,用order by来处理即可。
比如:
col
a123
a234
b999
b335
select * from tablename order by col;

结果就是

col
a123
a234
b335
b999

如果按倒序排列:
select * from tablename order by col desc;

结果就是

col
b999
b335
a234
a123
第2个回答  2012-03-22
先创建一个sequence
然后给插入数据的表写个trigger;before insert 的时候 设置这个字段的值为
SD||sequence.nextval追问

不是很明白,不知道这位大哥,能否贴出一个例子...

追答

create sequence seq_1 start with 1 nocache;
seq_1为序列名称
触发器如下:

create trigger xxx_id_trg --trigger name
before insert
on table_name
for each row
begin
:new.column_name:=SD||lpad( seq_1.nextval,6,'0');
end;

追问

--users 是表名,包括两个字段, u_id 和 u_name
--seq_1 是序列名
--u_id 是列名,也就是要生成编号的列,类型为varchar2型
--序列已经创建,名字为 seq_1
create trigger user_id_trg
before insert
on users
for each row
begin
:new.u_id:=SD||lpad(seq_1.nextval,6,'0');
end;
--执行插入的时候报错,触发器无效
insert into users(u_name) values('a')

追答

创建trigger时报错么?
重新编译下看看

追问

create trigger user_id_trg
before insert
on users
for each row
begin
:new.u_id:='SD'||lpad(seq_1.nextval,6,'0');
end;
嗯,执行上面代码后 trigger直接报错
错误在 seq_1.nextval 这里,这里不能放序列,
如果放一个 数字就没问题
是不是代码错了,我初次接触到触发器..

本回答被提问者采纳
第3个回答  2012-03-27
create sequence 表名_seq increment by 1 start with 100000001 nocache;

insert into 表名(字段,字段,字段,字段)
values('SD'||表名_seq.nextval,'张三','123','Y');

这个东西又没什么逻辑的,不知道楼主究竟要怎样的效果追问

嗯,说的有点道理,如何产生一个字母+日期+数字(数字是自增的) 例如: AC20120330001的代码呢?

第4个回答  2012-03-22
建一个自增列id,像000001这样。那么SD||id就等于SD000001了

oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?
排序的话,用order by来处理即可。比如:col a123 a234 b999 b335 select * from tablename order by col;结果就是 col a123 a234 b335 b999 如果按倒序排列:select * from tablename order by col desc;结果就是 col b999 b335 a234 a123 ...

oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?
排序的话,用order by来处理即可。比如:col a123 a234 b999 b335 select from tablename order by col;结果就是 col a123 a234 b335 b999 如果按倒序排列:select from tablename order by col desc;结果就是 col b999 b335 a234 a123

oracle数据库,主键设置为ID,插入语句时,如何自动生成ID并让它顺序增加...
使用oracle数据库中的关键字sequence来实现目的。\/\/创建mySeq create sequence mySeqstart with 1increment by 2maxvalue 40minvalue 1cycle \/\/创建用户表 create table USER(Id int,CompName varchar2(20))插入语句可以这样写:insert into USER values(mySeq.nextVal,'AA')这样的话每次插入的ID就是...

oracle 数据库 数据表自动生成序号 怎么添加??
需要先创建序列,然后nextval添加数据使其自动生成序号。1、创建表:create table test(id int,name varchar2(20));2、创建序列:Create sequence seq_test_idIncrement by 1Start with 1Maxvalue 999999Minvalue 1Nocyclenocache;3、插入数据:insert into test values (seq_test_id.nextval,'badkano...

oracle有没有方法把数据库表中的字段的所有数据中的某个字母或数字修改...
update 表 set big=replace(big,'_b.png','_l.png')where 条件 这样?

我要往oracle数据库表中插入数据,但是希望每条数据能有一个唯一的...
数据里新建一个ID字段,将这个字段的属性设为非空值,数字型,自动增长。这样你在insert的时候,数据库会自动插入这个ID,从1开始自己加1。

在java中如何向oracle数据库表中insert一条带序列id的语句?
首先:你可以创建一个sequence 如:create sequence testsequence 然后在相应列上调用sequence的方法NEXTVAL 如:testsequence.NEXTVAL id 是testsequence.NEXTVAL 了。看看对你有没有什么帮助。

oracle数据库怎么增加一个字段的值
你是要sql语句还是什么?如果是Plsql 你选中表然后右击会有个菜单,找到Edit点击,然后后面有个"+"和"-"号 加号就是增加一列了。如果是sql语句 alter table 你的表名 add 增加的列名 Integer(增加列的字段类型) 希望能帮到你!

oracle数据库向表中插入一条数据的代码
insert into student(id,name,age) values ('1','张三','19');

oracle数据库表里有数据了,可以直接再添加一个字段吗?
1、连接oracle数据库服务,如果你的数据库服务器是部署在你的电脑上需要输入用户名和密码,如果连接的是其他的服务器,则不需要。2、连接成功之后,建表,右键表,选择新建表。3、输入表名,勾选主键不能为空。4、建表成功之后,建字段。5、点击如下图所示的按钮,增加字段。6、然后点击加号,出现新...

相似回答