tipos tipo telefono precios permitir para izquierda guardar electronico datos dato correo ceros php mysql string integer varchar

php - telefono - tipos de datos en mysql workbench



Almacenar los ceros iniciales de enteros en la base de datos MySQL como INTEGER (4)

Necesito MySQL para almacenar números en un campo de enteros y mantener los ceros iniciales. No puedo usar la opción zerofill ya que mi campo actual es Bigint (16) y los números pueden variar en la cantidad de ceros iniciales. IE: 0001 - 0005, entonces es posible que se deba almacenar 008 - 010. No me preocupa la singularidad de los números (no se utilizan como ID ni nada), pero aún necesito que se almacenen preferentemente como INTS.

El problema al utilizar CHAR / VARCHAR y luego encasillar los valores como enteros en PHP significa que la clasificación de los resultados mediante consultas conduce a la clasificación alfanumérica, IE: SORT BY número ASC produciría

001 002 003 1 100 101 102 2

Claramente no en orden numérico, sino en orden alfanumérico, lo que no se desea.

Esperando algunas soluciones inteligentes :)


Cambie la estructura del campo y haga los Atributos UNSIGNED_ZEROFILL para mantener los ceros.

Pero debes tener cuidado con la Longitud del campo, ya que devolverá todos los números de resto a ceros, así que pon la longitud de tu campo


Mantener los números almacenados como enteros.

Luego use la función LPAD() para mostrar los números (izquierda) rellenados con ceros:

SELECT LPAD( 14, 7, ''0'') AS padded; | padded | ----------- | 0000014 |

Si el número de caracteres zerofill es variable, agregue otra columna en la tabla con esa longitud (zerofill).


No se puede almacenar entero con ceros iniciales. Una forma es mantenerlo tanto en varchar como en columnas int. En este caso, necesita dos columnas, un valor y el otro intValue y, al ordenar, puede usar intValue para ordenar. Esto es fácil de implementar.

Select Value from Table order by intValue;

La otra opción puede ser usar dos columnas, una valu y otra NumOfZero y usarlas para obtener los resultados deseados. Esto es complejo, pero podría ser ligero en la base de datos.


Todavía puede ordenar las columnas de cadena (CHAR / VARCHAR) como un entero usando CAST

ORDER BY CAST(`col_name` AS SIGNED) DESC

Por lo tanto, puede almacenarlos en campos de tipo CHAR / VARCHAR.