Oracle-SQL: генерация циклических составных последовательностей - PullRequest
3 голосов
/ 09 сентября 2010

Я хочу сгенерировать составные последовательности в следующем формате:

<Alphabet><2 digit numeric code>

Каждая серия алфавита будет иметь числовые значения в диапазоне от 00 до 99.

Начальное значение будет A00 , последующие значения будут A01 , A02 и так далее. При достижении A99 следующая последовательность должна перенести в B00 . Когда серия "B" будет исчерпана, она перейдет к серии C (т.е. C00 ) и так далее. Последовательность будет продолжаться до тех пор, пока она не достигнет Z99 - после чего она вернется к A00 .

Как это можно сделать в SQL (или PL / SQL)?

Ответы [ 2 ]

7 голосов
/ 09 сентября 2010

Лично я бы сохранил просто НОМЕР, а затем вычислил «составную последовательность» на лету, например:

select
chr(ascii('A') + ((number_sequence div 100) mod 26)) || to_char(number_sequence mod 100) composite_sequence,
...
from mytable

26 при условии, что английский алфавит, измените для вашего желаемого алфавита

3 голосов
/ 09 сентября 2010

Использование:

  SELECT CHR(x.ascii) || LPAD(y.num - 1, 2, '0') AS val
    FROM (SELECT 64 + LEVEL AS ascii
          FROM DUAL
    CONNECT BY LEVEL <= 26) x,
      (SELECT LEVEL AS num
         FROM DUAL
   CONNECT BY LEVEL <= 100) y
...