如何使用sql批量生成不重复的有规则数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用sql批量生成不重复的有规则数据?相关的知识,希望对你有一定的参考价值。
如何使用sql批量生成不重复的有规则数据?
例如存在表test:
create table code_test
( IID VARCHAR2(100),
NAME VARCHAR2(200),
CODE VARCHAR2(100)
)
存在数据:
insert into code_test values ('1','1','code-0001');
/
insert into code_test values ('2','2','code-0004');
/
insert into code_test values ('3','3','code-0007');
/
insert into code_test values ('4','4','code-0003');
/
insert into code_test values ('5','5','');
/
insert into code_test values ('6','6','');
/
insert into code_test values ('7','7','');
/
insert into code_test values ('8','8','');
/
insert into code_test values ('9','9','');
/
其中iid字段唯一,code字段的规则是:“code-”+流水号。现在想要使用sql对code为空的字段生成code,其规则是:与已存在的code字段不重复。
自己的思路:取得最大的流水号007,在此基础上往上加生成code-0008,code-0009.。。。。
请问如何实现?能不能不用存储过程,使用一条sql语句实现?
请给个详细的程序呗
参考技术B update code_test t set t.code = 'code-00' || 序列.nextval where t.code is null;序列最小值从10开始吧,呵呵。追问
update code_test t set t.code = 'code-00'||10.nextval where t.code is null;执行不通过啊
追答汗,你先要建个sequence。
追问sql不太会啊。。。给个详细的程序呗。。。谢谢啦
参考技术C create or replace procedure pro_code(in_iid number)as
maxcode number(4,0);
begin
select max( right(code,4)) from code_test into maxcode from code_test;
maxcode = maxcode + 1;
create sequence seq2
start with maxcode
increment by 1
maxvalue 99999
cycle
update code_test set code = 'code-'|| ltrim(to_char(seq2.nextval,'0000')) where iid = in_iid
end;本回答被提问者采纳 参考技术D 视规则而定
MySQL 批量插入,如何不插入重复数据?
以上是关于如何使用sql批量生成不重复的有规则数据?的主要内容,如果未能解决你的问题,请参考以下文章
PHP如何批量生成手机号-使用PHP 如何生成一组不重复的手机号码?