Concatenar strings MYSQL

25/05/2017

0

Estou com um problema para concatenar duas strings em uma procedure, preciso que ela retorne números e letras aleatórias.
Se tiver alguma forma melhor aceito dicas :)


PROCEDURE Base.ALEATORIO()
BEGIN
  DECLARE str VARCHAR(255) DEFAULT '123456789ABCDEFGHIJA'; -- Cacacteres possiveis
  DECLARE pa INT DEFAULT 0; -- posicao aleatoria
  
  DECLARE i INT DEFAULT 0; -- Contador loop
  DECLARE digitos INT DEFAULT 4; -- Quantidade de Digitos
  DECLARE res VARCHAR(255); -- Resultado

  WHILE i <= digitos -1 DO
    SET pa = (SELECT FLOOR(( SELECT character_length( str ) )+(rand()*( 1 - ( SELECT character_length( str ) )))));
    
    SET res = (res ,SUBSTRING(str FROM pa FOR 1));

    SET i = i + 1;

  END WHILE;
  SELECT res;
END

Carlos Eduardo

Carlos Eduardo

Responder

Posts

25/05/2017

Luiz Santos

Bom dia Souza.

É que você precisa que ela retorne números e letras aleatórias.
Se fossem só números, te diria para usar o código abaixo:

SELECT FLOOR(0 + RAND() * 10) AS ALEATORIO


Onde o 0 e o 10 no comando servem para você determinar o range em que seu número aleatório vai estar.
No caso do meu exemplo, ele retorna um numero aleatório entre 1 e 10.

Para concatenar 2 strings, use o comando CONCAT(string1,string2), igual ao exemplo abaixo.

SELECT CONCAT('A','B')


Espero ter ajudado.

Grande abraço
Responder

25/05/2017

Carlos Eduardo

Bom dia Souza.

É que você precisa que ela retorne números e letras aleatórias.
Se fossem só números, te diria para usar o código abaixo:

SELECT FLOOR(0 + RAND() * 10) AS ALEATORIO


Onde o 0 e o 10 no comando servem para você determinar o range em que seu número aleatório vai estar.
No caso do meu exemplo, ele retorna um numero aleatório entre 1 e 10.

Para concatenar 2 strings, use o comando CONCAT(string1,string2), igual ao exemplo abaixo.

SELECT CONCAT('A','B')


Espero ter ajudado.

Grande abraço


Opa vlw,
Eu Utilizo

"SELECT FLOOR(0 + RAND() * 10) "

porem de outra forma, utilizo ele para pegar uma posição aleatória da minha variável str,
utilizando como parametro a quantidade de caracteres.

"(SELECT FLOOR(( SELECT character_length( str ) )+(RAND()*( 1 - ( SELECT character_length( str ) )))));"

minha dificuldade está quando vou concatenar o meu valor anterior com novo em um loop,
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar