我必须在 Oracle-SQL 中生成一个二进制字符串。 它有一些规则。它可以包含字母 (A-Z) + 数字 (0-9) 像 A1、A2、A3 (但是不能以数字开头。1A、2A不要。) 你可以把字母表中的所有字母想象成 A、B、C。 它可以包含字母 (A-Z) + 字母 (A-Z) 像 AA, AB, AC, AD
有这样一个数据集,但是并没有提供平滑的增加。一些中间值已被删除
那样的话,首先会生成被删除的那个 其次,如果所有中间值都被填充,则可以生成最大值。 我认为它需要一个十六进制的解决方案,但它不能按照希望进行的顺序增加。 我应该采取什么样的方法? 有人有想法吗?
提前致谢
最佳答案
我开发了几乎相同的请求,我根据您的规则修改我的案例。 它以最小的字母开头,不是通过 for 循环分配的。它控制如果字母-字母和字母-数字组合已满,则传递下一个字母。
as
temp varchar2(2);
pn_num NUMBER;
cn_string constant varchar2(25) := 'abcdefghijklmnoprstuvwxyz';
cn_string2 constant varchar2(35) := 'abcdefghijklmnoprstuvwxyz0123456789';
begin
pn_num := -1;
ps_seri_num := '-1';
for i in 1..25
loop
for j in 1..35
loop
select
upper( substr(cn_string,i,1) ||
substr(cn_string2,j,1))
into temp from dual;
select count(seri)
into pn_num
from bankdb.vrgdaire
where seri = temp;
IF pn_num = 0 THEN
--aa yok
ps_seri_num := temp;
exit;
END IF;
end loop;
IF ps_seri_num <> '-1' THEN
exit;
END IF;
end loop;
关于sql - 如何生成字符数组的二进制组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791575/