Existe una función que puede darte esa solución, pero tiene dos problemas: 1) Devuelve un string de 36 caracteres siempre. 2) El string es alfanumerico.
este es el caso de
Esto devuelve un identificador único universal, que no se puede repetir (basado en una clave de 128 bits), el manual de referncia dice:
Cita: UUID()
Retorna un Universal Unique Identifier (UUID) (Identificador Único Universal) generado según la “DCE 1.1: Remote Procedure Call” (Apéndice A) CAE (Common Applications Environment) Especificaciones publicadas por The Open Group en Octubre 1997 (Número de Documento C706).
Se designa un UUID como número que es único globalmente en espacio y tiempo. Dos llamadas a UUID() generan dos valores distintos, incluso si estas llamadas se realizan en dos máquinas separadas y no están conectadas entre ellas.
Un UUID es un número de 128 bits representado por una cadena de cinco números hexadecimales en formato aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:
* Los primeros tres números se generan de un valor temporal.
** El cuarto número preserva unicidad temporal en caso de que el valor temporal pierda moniticidad (por ejemplo, debido al cambio horario).
*** El quinto número es un número IEEE 802 de nodo que proporciona unicidad espacial. Un número aleatorio se sustituye si el último no está disponible (por ejemplo, debido a que la máquina no tenga tarjeta Ethernet, o no sabemos encontrar la dirección hardware de una interfaz en el sistema operativo). En este caso, la unicidad espacial no se puede garantizar. Sin embargo, una colisión debe tener una probabilidad muy baja.
Es posible que operando con esto, o bien con la función RAND() puedas dar con una solución.
En este último caso deberías usar
Código SQL:
Ver originalSELECT LPAD((RAND()*1000000 DIV 1),8,'0');
Para obtener un string de 8 dígitos aleatorio.