cómo recortar los ceros a la izquierda del texto alfanumérico en la función mysql

¿Qué funciones de MySQL existen (si existen) para recortar ceros a la izquierda de un campo de texto alfanumérico?

El campo con el valor "00345ABC" debería devolver "345ABC".

0

7 Respuestas

TRIM le permitirá eliminar los caracteres finales, principales o todos. Algunos ejemplos sobre el uso de la función TRIM en MySQL:

select trim(myfield) from (select '   test' myfield) t;
>> 'test'
select trim('0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(both '0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(leading '0' from myfield) from (select '000000123000' myfield) t;
>> '123000'
select trim(trailing '0' from myfield) from (select '000000123000' myfield) t;
>> '000000123'

Si desea eliminar solo una cantidad selecta de caracteres iniciales/finales, investigue las funciones IZQUIERDA/DERECHA, con la combinación de las funciones LEN e INSTR.

0
agregado

Si desea actualizar una columna completa de una tabla, puede usar

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
0
agregado

Está buscando la función trim() .

Bien, aquí está tu ejemplo

SELECT TRIM(LEADING '0' FROM myfield) FROM table
0
agregado
¿Esto también es para ceros múltiples?
agregado el autor Peter, fuente
++ Específicamente TRIM (LIDERANDO '0' DE '000345ANB095')
agregado el autor Tom Ritter, fuente
Dejará el valor en blanco si ya es '0000'.
agregado el autor arslion, fuente

Creo que estarías mejor con esto:

SELECT TRIM(LEADING '0' FROM myField)
0
agregado

simplemente elimine espacio entre TRIM (LEADING utilizar

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
0
agregado
¿Funcionará esto con ceros múltiples?
agregado el autor Peter, fuente

PROPINA:

Si sus valores son puramente numéricos, también puede usar el casting simple, p.

SELECT * FROM my_table WHERE accountid = '00322994' * 1

en realidad se convertirá en

SELECT * FROM my_table WHERE accountid = 322994

que es una solución suficiente en muchos casos y también creo que es el rendimiento más efectivo. (advertencia: el tipo de valor cambia de STRING a INT/FLOAT).

En algunas situaciones, usar alguna función de conversión también puede ser un camino a seguir:

http://dev.mysql.com/doc/refman/5.0/en/cast- functions.html

0
agregado
Creo que + 0 es una forma más común de convertir a un int que * 1
agregado el autor mpen, fuente
Esto es muy útil si el valor es como '000000'.
agregado el autor Septian Primadewa, fuente

SELECCIONE TRIM (LIDERANDO '0' FROM columnName ) FROM tableName ; Esto también funciona correctamente

0
agregado