在SELECT(MySQL客户端)中截断列名

时间:2016-11-09 18:35:56

标签: mysql

当我查看新数据库以探索其中的内容时,通常我会得到包含长列名但内容短的表,例如:

mysql> select * from Seat limit 2;

+---------+---------------------+---------------+------------------+--------------+---------------+--------------+-------------+--------------+-------------+---------+---------+----------+------------+---------------+------------------+-----------+-------------+---------------+-----------------+---------------------+-------------------+-----------------+

| seat_id | seat_created        | seat_event_id | seat_category_id | seat_user_id | seat_order_id | seat_item_id | seat_row_nr | seat_zone_id | seat_pmp_id | seat_nr | seat_ts | seat_sid | seat_price | seat_discount | seat_discount_id | seat_code | seat_status | seat_sales_id | seat_checked_by | seat_checked_date   | seat_old_order_id | seat_old_status |

+---------+---------------------+---------------+------------------+--------------+---------------+--------------+-------------+--------------+-------------+---------+---------+----------+------------+---------------+------------------+-----------+-------------+---------------+-----------------+---------------------+-------------------+-----------------+

|    4897 | 2016-09-01 00:05:54 |           330 |              331 |         NULL |          NULL |         NULL | 0           |         NULL |        NULL | 0       |    NULL | NULL     |       NULL |          0.00 |             NULL | NULL      | free        |          NULL |            NULL | 0000-00-00 00:00:00 |              NULL | NULL            |
|    4898 | 2016-09-01 00:05:54 |           330 |              331 |         NULL |          NULL |         NULL | 0           |         NULL |        NULL | 0       |    NULL | NULL     |       NULL |          0.00 |             NULL | NULL      | free        |          NULL |            NULL | 0000-00-00 00:00:00 |              NULL | NULL            |

+---------+---------------------+---------------+------------------+--------------+---------------+--------------+-------------+--------------+-------------+---------+---------+----------+------------+---------------+------------------+-----------+-------------+---------------+-----------------+---------------------+-------------------+-----------------+

由于标题的长度比每行的内容长,我看到一个难以标准化的无格式输出,特别是当你搜索一些没有被使用的字段等的线索时。

有没有办法告诉mysql客户端自动截断列名,例如最多10个字符?前10个字符通常足以知道它们所指的列。

当然,我可以使用AS来维护列别名,但是如果列数太多并且您想进行快速探索,则每个表需要太长时间。

其他解决方案是告诉mysql删除每列的前缀seat_(当然,对于我需要更改使用的前缀的每一列)。

3 个答案:

答案 0 :(得分:1)

我认为没有办法自动完成。一些选项是:

1)使用PhpMyAdmin等图形用户界面查看表格内容。这些通常允许您调整列宽。

2)使用\G代替;结束查询:

    mysql> SELECT * FROM seat LIMIT 2\G

这将水平而不是垂直显示列:

      seat_id: 4897
 seat_created: 2016-09-01 00:05:54
seat_event_id: 330
...

我经常将后者用于包含大量列的表格,因为读取横向格式可能很困难,尤其是当它在终端上环绕时。

3)在不包裹线条的模式下使用less寻呼机。然后,您可以使用箭头键向左和向右滚动。

    mysql> pager less -S

请参阅How to better display MySQL table on Terminal

答案 1 :(得分:1)

我意识到你已经接受了答案,但这里还有其他一些选择:

您可以通过使用-N--skip-column-names选项运行MySQL客户端来完全跳过列名。然后,列的宽度将由最宽的数据确定,而不是列名称。但是列名称会有 no 行。

您也可以使用列别名来设置自己的列名,但您必须自己手动输入这些名称。

答案 2 :(得分:0)

我没有足够的代表只是评论,所以我会把它扔到这里。这是你在找什么

How can I suppress column header output for a single SQL statement?