MySQL - Eliminar caracteres

 
Vista:
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Eliminar caracteres

Publicado por Hercross (26 intervenciones) el 15/10/2021 12:45:09
Hola buenos días, tengo una SELECT que me devuelve algo como esto:

ALG/12345pppp;/jgh

Ese valor es correcto, pero quiería eliminar todas las letras, es decir, dejar solo los números.

Se como usar substring para partirlo, pero puedo hacer algo para que esta select me devuelva 12345 solo?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Eliminar caracteres

Publicado por Francisco (73 intervenciones) el 15/10/2021 21:47:15
H>ola


Si estas usando oMySQL v 8.x puedes probar con esta sentencia

1
SELECT REGEXP_REPLACE('ALG/12345pppp;/jgh', '[^0-9]+', '');

Si es una version anterior a v 8.x

Entonces tienes que crear una funcion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
DELIMITER $$
 
CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50))
RETURNS INT
NO SQL
BEGIN
    DECLARE ctrNumber VARCHAR(50);
    DECLARE finNumber VARCHAR(50) DEFAULT '';
    DECLARE sChar VARCHAR(1);
    DECLARE inti INTEGER DEFAULT 1;
 
    IF LENGTH(in_string) > 0 THEN
        WHILE(inti <= LENGTH(in_string)) DO
            SET sChar = SUBSTRING(in_string, inti, 1);
            SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9');
            IF ctrNumber > 0 THEN
                SET finNumber = CONCAT(finNumber, sChar);
            END IF;
            SET inti = inti + 1;
        END WHILE;
        RETURN CAST(finNumber AS UNSIGNED);
    ELSE
        RETURN 0;
    END IF;
END$$
 
DELIMITER ;
 
 
SELECT ExtractNumber('ALG/12345pppp;/jgh');

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar