我有一个包含许多数字列(一些 INT,一些 FLOAT)的 MySQL 表。我想用 MySQL 命令行客户端(特别是mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1
)查询它,如下所示:
SELECT * FROM table WHERE foo;
不幸的是,如果任何数字字段的值超过 10^6,此客户端会以科学计数法显示结果,这使得读取结果变得困难。
我可以通过格式化查询中的每个字段来纠正问题,但是我想查询其中有很多字段和很多表。相反,我希望找到一个可以设置为禁用所有查询的科学记数法的客户端变量或标志。
我无法在页面--help
或man
页面中找到一个,也无法搜索 Google 或此站点。相反,我发现的只是在使用<insert-programming-language>
MySQL API 时保留/删除科学记数法的讨论。
谢谢你的任何提示。
::编辑::
这是一个示例表...
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 |
+--------------+-------------+------+-----+-------------------+
和一些示例值...
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 |
+------------+--------+--------------+---------------------+
现在,我加载到第三个字段中的实际值是:
88779.5, 1002539.25, 78706.5390625
如果我操纵该值,它们可以准确地看到:
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 |
客户端中的某些东西似乎在强制我只能看到六个有效数字,即使表中还有更多。
如果查询如
mysql> select ROUND(*, 2) from foo ...
有可能,那太好了!否则,当我需要检查一些数据时,我真的不能花时间在“ROUND()”中单独包装 100 个列名。
有趣的是,我偶尔会使用一个 phpMyAdmin 界面来浏览其中一些表格的内容,并且该界面也有这个 6 位有效数字的限制。因此,它不仅限于 CLI。