Мне нужно сгенерировать уникальные идентификаторы, длина которых не должна превышать 5, из-за этого числа не подходят, он каким-либо образом генерирует уникальные строки в базе данных оракула?Как генерировать последовательность строк оракула?
ответ
Это может помочь: http://www.deep-data-mining.com/2012/06/five-ways-of-creating-unique-record.html
Этот бит выглядит полезным:
Согласно документу Oracle, SYS_GUID генерирует и возвращает глобально уникальный идентификатор (необработанное значение) из 16 байтов.
Например, в нашей системе Oracle, я могу это сделать:
select sys_guid() uniq_id from dual;
И получить это:
059D828192804EABE05400144FFB6CA7
В следующий раз я получаю:
059D828192A34EABE05400144FFB6CA7
Некоторые из числа увеличиваются каждый раз.
я мог бы ограничить, что 5 символов, в том числе битов строки, которые изменяются каждый раз, когда он работает:
select substr(sys_guid(),9,5) uniq_id from dual;
Чтобы получить, например,
92D14
Как я вижу, вы просто вырезали сгенерированную строку, и она не может быть уникальной. –
Да, извините, я думаю, что мой ответ был, вероятно, грузом старого мусора: - \ Извините. Я думал, что номер будет уникальным, но, возможно, это будет не так, я не уверен. Извините за то, что потратил время. –
Вы можете попробовать использовать Base 36: http://en.wikipedia.org/wiki/Base_36
SQL: Base 36 to Base 10 conversion using SQL only
Благодаря комментарии к этому ответу, я добавляю пример:
Эта функция преобразует базу 10 к базе, которая состоит из букв.
create or replace
function basen(n10 in number, letters in varchar2) return varchar2 as
s varchar2(1000);
len number := length(letters);
base10 number := n10;
begin
if len <= 0 then
return null;
end if;
loop
if base10 < len then
return substr(letters, base10+1, 1) || s;
end if;
s := substr(letters, mod(base10, len)+1,1) || s;
base10 := floor(base10/len);
end loop;
return s;
end baseN;
Эта функция преобразует base10 в base36:
create or replace function base36(n10 in number) return varchar2 as
begin
return basen(n10, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ');
end base36;
Вы можете создать общую последовательность с соответствующей MINVALUE и MAXVALUE и использовать один из указанных выше способов в триггере, SQL и т.д.
Этот метод использует числа в формате HEX.
select to_char(seq.nextval, 'fm0XXXX')
from dual;
Или это более компактный способ использовать все символы между ASCII код 33 и 122:
select num,
chr(33 + mod(floor(num/(90*90*90*90)), 90))||
chr(33 + mod(floor(num/(90*90*90)), 90))||
chr(33 + mod(floor(num/(90*90)),90))||
chr(33 + mod(floor(num/90),90))||
chr(33 + mod(num,90)) as x00000
from (select seq.nextval as num
from dual);
В основном это представление числа 90 на основе.
- 1. Как реализовать пользовательскую последовательность оракула?
- 2. Arango: генерировать последовательность дат
- 3. Lua - генерировать последовательность чисел
- 4. генерировать последовательность в схеме
- 5. ggplot: Генерировать последовательность гистограмм
- 6. Уникальная последовательность для столбца в таблице оракула
- 7. Генерировать двоичную последовательность
- 8. как генерировать план выполнения цикла оракула
- 9. Генерировать диапазон строк
- 10. генерировать текст последовательность в PowerShell
- 11. генерировать последовательность со всеми перестановками
- 12. postgresql генерировать последовательность без пробелов
- 13. генерировать последовательность в SQL выберите
- 14. генерировать целую последовательность в MySQL
- 15. xslt Как генерировать последовательность нетипизированного атома?
- 16. Как генерировать случайную последовательность чисел в python?
- 17. Как генерировать шестнадцатеричную последовательность в Swift?
- 18. как генерировать сходящуюся последовательность в спящем режиме
- 19. сделать последовательность в базе данных оракула
- 20. создать последовательность в оракула для каждого блока
- 21. Несколько строк в оракула
- 22. Генерировать альфа-числовую последовательность в C#
- 23. Генерировать случайные значения в окне оракула
- 24. Создать последовательность строк
- 25. Обновление нескольких строк в оракула
- 26. генерировать случайную последовательность и график в R
- 27. Генерировать случайную двоичную последовательность с определенным отношением
- 28. Подзапрос оракула возвращает несколько строк
- 29. Найти последовательность строк
- 30. php_excel: Настроить последовательность строк
Сколько значений нужно учесть? Используя обычную последовательность, но сохраняя шестнадцатеричный эквивалент, вы получите от 100 000 значений до 1 048 756, но это все еще может быть слишком низким? Использование 26 символов даст 11 881 376 возможных значений; включая цифры, даст 60 466 176. Но сложнее преобразование последовательности. –
почему ограничение на 5? (изменение схемы будет иметь больше смысла imo).Кроме того, даже если вы придерживаетесь ограничения 5, сколько уникальных значений вам нужно? Вероятно, лучше всего изменить схему и использовать либо число, либо sys_guid. – tbone
Lemetation on 5 из-за документации от клиента для готового отдыха api, мне нужно более десяти миллиардов объектов. –