У меня есть таблица MySQL со многими числовыми столбцами (некоторые INT, некоторые FLOAT). Я хотел бы запросить его с помощью клиента командной строки 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 или на этом сайте. Вместо этого все, что я нашел, - это обсуждение сохранения / удаления научной нотации при использовании MySQL API <insert-programming-language>
.
Спасибо за любые советы.
:: редактировать ::
Вот пример таблицы ...
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 ...
было возможно, это было бы здорово! В противном случае, я не могу потратить время на то, чтобы по отдельности обернуть 100 имен столбцов в «ROUND ()», когда мне нужно проверить некоторые данные.
Интересно, что я иногда использую интерфейс phpMyAdmin для просмотра содержимого некоторых из этих таблиц, и этот интерфейс также имеет это 6 существенное ограничение фигуры. Так что это не ограничивается только CLI.