2012-02-07 21 views
5

Tengo una tabla MySQL con muchas columnas numéricas (algunas INT, algunas FLOTANTES). Me gustaría consultar con el cliente de línea de comandos de MySQL (en concreto, mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1), así:¿Deshabilita la notación científica en el cliente de línea de comandos de MySQL?

SELECT * FROM table WHERE foo; 

Por desgracia, si el valor de cualquier campo numérico es superior a 10^6, este cliente muestra el resultado en científica notación, lo que dificulta la lectura de los resultados.

Pude corregir el problema formando cada uno de los campos en mi consulta, pero hay muchos de ellos y muchas tablas que me gustaría consultar. En cambio, espero encontrar una variable de cliente o un indicador que pueda configurar para desactivar la notación científica para todas las consultas.

No he podido encontrar uno en la página --help o la man, ni tampoco busco en Google o este sitio. En su lugar, todo lo que encuentro son discusiones sobre la preservación/eliminación de la notación científica cuando se usa la API MySQL de <insert-programming-language>.

Gracias por cualquier sugerencia.

:: :: editar

Aquí hay una tabla de ejemplo ...

mysql> desc foo; 
+--------------+-------------+------+-----+-------------------+ 
| Field  | Type  | Null | Key | Default   | 
+--------------+-------------+------+-----+-------------------+ 
| date   | date  | NO | PRI | NULL    | 
| name   | varchar(20) | NO | PRI | NULL    | 
| val   | float  | NO |  | NULL    | 
| last_updated | timestamp | NO |  | CURRENT_TIMESTAMP | 
+--------------+-------------+------+-----+-------------------+ 

y algunos valores de ejemplo ...

mysql> select * from foo where date='20120207'; 
+------------+--------+--------------+---------------------+ 
| date  | name | val   | last_updated  | 
+------------+--------+--------------+---------------------+ 
| 2012-02-07 | A  |  88779.5 | 2012-02-07 13:38:14 | 
| 2012-02-07 | B  | 1.00254e+06 | 2012-02-07 13:38:14 | 
| 2012-02-07 | C  |  78706.5 | 2012-02-07 13:38:15 | 
+------------+--------+--------------+---------------------+ 

Ahora, los valores reales que he cargado en el El tercer campo es:

88779.5, 1002539.25, 78706.5390625 

y que se puede ver exactamente si manipular el valor:

mysql> select date, name, ROUND(val, 10), last_updated from foo where ... 
+------------+---+--------------------+---------------------+ 
| 2012-02-07 | A | 88779.5000000000 | 2012-02-07 13:38:14 | 
| 2012-02-07 | B | 1002539.2500000000 | 2012-02-07 13:38:14 | 
| 2012-02-07 | C | 78706.5390625000 | 2012-02-07 13:38:15 | 

Algo en el cliente parece estar aplicando que sólo se le permita ver seis cifras significativas, a pesar de que hay más en la tabla.

Si una consulta como

mysql> select ROUND(*, 2) from foo ... 

fuera posible, eso sería genial! De lo contrario, realmente no puedo tomar el tiempo para envolver individualmente 100 nombres de columna en "ROUND()" cada vez que necesito inspeccionar algunos datos.

Curiosamente, de vez en cuando uso una interfaz phpMyAdmin para explorar el contenido de algunas de estas tablas, y esa interfaz también tiene esta limitación de 6 cifras significativas. Por lo tanto, no se limita solo a la CLI.

+0

La notación científica se creó con el fin de hacer que los valores decimales grandes sean MÁS FÁCILES de leer. –

+0

Creo que no tienes suerte aquí. No creo que la CLI haga de esto una opción. –

+0

@Ramhound Sí, pero es MÁS DIFÍCIL leer esos valores cuando se mezclan con valores que no están en notación científica. –

Respuesta

0

Bueno, después de leer la documentación más a fondo, todavía no veo ninguna razón por la que un cliente se limite a mostrar solo 6 sig higos de un FLOAT (especialmente cuando la tabla en sí es definitivamente almacenar más).

No obstante, una solución aceptable (para este usuario cansado) es cambiar todas mis tablas para usar DECIMAL (16,4) en lugar de FLOAT. Desafortunadamente, esto hace que todos mis números aparezcan con 4 decimales (incluso si son todos '0'). Pero al menos todos los números tienen el mismo ancho ahora, y mi cliente nunca los muestra en notación científica o limita el número de sig higos en su salida.

0

¿La función CAST no le permitiría solicitar que los valores de un determinado campo se devuelvan como DECIMAL?No soy un experto y no lo he probado, pero eso sería lo primero que intentaré.

+0

Sí, eso es tan bueno como cualquier otra sugerencia por campo La pregunta, sin embargo, es cómo evitar el uso de cualquier operación por campo para obtener los resultados en el formato correcto. Quiero poder escribir select * from foo ... y no ver ninguna notación científica. – dg99

Cuestiones relacionadas