Mysql
 sql >> база данни >  >> RDS >> Mysql

Генериране на произволен и уникален низ от 8 символа с помощта на MySQL

Не бих се притеснявал от вероятността от сблъсък. Просто генерирайте произволен низ и проверете дали съществува. Ако се случи, опитайте отново и не трябва да го правите повече от няколко пъти, освен ако вече нямате назначен голям брой табели.

Друго решение за генериране на 8-символен дълъг псевдослучаен низ в чист (My)SQL:

SELECT LEFT(UUID(), 8);

Можете да опитате следното (псевдокод):

DO 
    SELECT LEFT(UUID(), 8) INTO @plate;
    INSERT INTO plates (@plate);
WHILE there_is_a_unique_constraint_violation
-- @plate is your newly assigned plate number

Тъй като тази публикация получи неочаквано ниво на внимание, позволете ми да подчертая Коментар на ADTC :горната част от кода е доста глупава и произвежда последователни цифри.

За малко по-малко глупава произволност опитайте нещо подобно:

SELECT LEFT(MD5(RAND()), 8)

И за истинска (криптографски защитена) произволност, използвайте RANDOM_BYTES() вместо RAND() (но тогава бих помислил да преместя тази логика нагоре към слоя на приложението).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате MySQL 8 на Ubuntu 20.04 LTS

  2. Как да използвам правилно CASE..WHEN в MySQL

  3. Как мога да импортирам база данни с MySQL от терминал?

  4. Разграничители в MySQL

  5. Има ли РЕАЛНА разлика в производителността между първичните ключове INT и VARCHAR?