2010-06-09 26 views

Respuesta

32

No, casi siempre es una mala idea.

  • utilizará más espacio
  • índices no serán tan eficientes
  • no se puede hacer aritmética
  • los datos no son autovalidante causa de tipo
  • generadores de auto-modelo darán tipo de cadena en lugar de numérico
  • agregados como SUM ya no funcionarán
  • la salida puede ordenar incorrectamente
  • tendrá que CAST para utilizarlo como un número, causando impacto en el rendimiento
  • etc.
0

No podrá hacer cálculos con columnas declaradas como varchar, por lo que se deben usar tipos numéricos. Y dado que su consulta SQL es una cadena de todos modos, MySQL hace toda la conversión por usted (eso no significa que no necesite validar los valores proporcionados por el usuario, por supuesto).

1

Creo que es buena idea guardar números como varchar, siempre y cuando no se quiere hacer con calculadoras eso.

Por ejemplo, un número de teléfono o códigos postales sería mejor para almacenar en varios campos porque podría formatearlos.

+0

Guardaría cosas como números de teléfono, y solo cosas como números de teléfono, como varchar, ya que en realidad no son números como tal. No haces matemáticas en los números de teléfono. Sin embargo, al decidir los tipos de datos para los campos siempre se debe utilizar de forma predeterminada los tipos numéricos sobre varchar, a menos que se le ocurra una buena razón para no hacerlo, porque pasar de varchar a numérico es mucho más difícil que al revés. – GordonM

3

Puede almacenar ceros a la varchar que no puede hacer con columnas enteras (por ejemplo, es posible tener una diferencia entre 123 y 0000123). Por ejemplo, códigos postales en algunos países. Sin embargo, si necesita hacer eso, entonces realmente está tratando con información textual que debería tener una columna varchar. Por ejemplo, los números de teléfono o códigos postales definitivamente deben ir a una columna varchar.

De lo contrario, si utiliza sus datos como números (agréguelos, comparándolos, etc.), debe ponerlos en la columna de enteros. Consumen mucho menos espacio y son más rápidos de usar.

+0

El problema de ceros a la izquierda también puede ser una desventaja. Recientemente me encontré con una situación en un proyecto donde, debido a la forma en que el código de Java lo había manejado, una tabla tenía ceros a la izquierda y la otra no. Esto hizo que sea más difícil hacer uniones en esta columna. Los datos eran un número y, por lo tanto, probablemente deberían haber sido almacenados como tales en lugar de como varchar. – xdhmoore

Cuestiones relacionadas