【问题标题】:How can I suppress column header output for a single SQL statement?如何抑制单个 SQL 语句的列标题输出?
【发布时间】:2013-04-12 15:53:52
【问题描述】:

我正在批量执行一些 SQL 语句(使用 mysql 命令行二进制文件)。我希望我的几个 SELECT 语句之一不打印列标题,只打印选定的记录。这可能吗?

【问题讨论】:

    标签: mysql output columnheader suppression


    【解决方案1】:

    使用-N-N 的别名是--skip-column-names)选项调用 mysql:

    mysql -N ...
    use testdb;
    select * from names;
    
    +------+-------+
    |    1 | pete  |
    |    2 | john  |
    |    3 | mike  |
    +------+-------+
    3 rows in set (0.00 sec)
    

    感谢 ErichBSchulz 指出 -N 别名。

    要删除结果周围的网格(垂直和水平线),请使用-s (--silent)。列用TAB 字符分隔。

    mysql -s ...
    use testdb;
    select * from names;
    
    id  name
    1   pete
    2   john
    3   mike
    

    要输出没有标题和网格的数据,只需同时使用-s-N

    mysql -sN ...
    

    【讨论】:

    • -sN 非常适合我将输出分配给脚本中的变量:TABLES=$(mysql -sN -u $DB_USER -p$DB_PASS...
    • 这适用于整个会话,而不仅仅是单个 SQL 语句。 Oracle SQLPlus 有set feedback onset feedback off,它们可以在会话中的任何位置使用。 MySQL是否有等价物?看起来这就是 OP 想要的。
    • 只是一个简短的评论,简化使用 select * from testdb.names; 没有明确的“使用”。
    • -s 的长选项是--silent,对于-N --skip-column-names。 -B 或 --batch 也能很好地代替 -s。
    【解决方案2】:

    你可以这样伪造:

    -- with column headings 
    select column1, column2 from some_table;
    
    -- without column headings
    select column1 as '', column2 as '' from some_table;
    

    【讨论】:

    • Error: Type mismatch: expected type string, but got 空别名错误
    • 看起来该错误来自 MySQL Workbench,而不是来自 MySQL。无论如何,您也可以使用单个空格而不是空字符串,这似乎在 MySQL Workbench 中有效:select column1 as ' ', column2 as ' ' from some_table;
    猜你喜欢
    • 2021-03-11
    • 2015-05-07
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2011-05-30
    • 2021-06-14
    • 2014-03-27
    相关资源
    最近更新 更多