我有一个包含许多数字列的MySQL表(一些是INT,一些是FLOAT)。我想使用MySQL命令行客户端(具体来说,mysql Ver 14.14 Distrib 5.1.41,for debian-linux-gnu(x86_64)using readline 6.1)进行查询,如下所示:
很不幸,如果任何数字字段的值超过10^6,则此客户端会以科学计数法显示结果,这使得阅读结果变得困难。
我可以通过在查询中对每个字段进行格式化来解决问题,但是有很多字段和表格需要查询。相反,我希望找到一个可以设置以禁用所有查询的科学计数法的客户端变量或标志。
我在--help或man页面中没有找到它,也没有在Google或该网站上搜索到它。相反,我发现了一些关于在使用的MySQL API时保留/删除科学计数法的讨论。
感谢您提供的任何提示。
::编辑::
以下是一个示例表...
现在,我加载到第三个字段中的实际值是:
如果可能的话,这将是很好的!否则,每当我需要检查某些数据时,我就不能花时间逐个用“ROUND()”包装100个列名。
有趣的是,我偶尔使用phpMyAdmin界面浏览一些表的内容,而该界面也具有这种6个有效数字的限制。因此它不仅仅限于CLI。
SELECT * FROM table WHERE foo;
很不幸,如果任何数字字段的值超过10^6,则此客户端会以科学计数法显示结果,这使得阅读结果变得困难。
我可以通过在查询中对每个字段进行格式化来解决问题,但是有很多字段和表格需要查询。相反,我希望找到一个可以设置以禁用所有查询的科学计数法的客户端变量或标志。
我在--help或man页面中没有找到它,也没有在Google或该网站上搜索到它。相反,我发现了一些关于在使用的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。
create table testLength( i int);
并且命令行客户端似乎没有问题,可以返回分解的值。 - technocrat