Can't see MySQL BIT field value when using SELECT

前端 未结 6 622
悲&欢浪女
悲&欢浪女 2020-12-13 08:30

my_table contains the enabled field which is defined as: enabled BIT NOT NULL DEFAULT 0.

This table has multiple rows with

相关标签:
6条回答
  • 2020-12-13 08:54

    Use HEX()

    Like: SELECT id, HEX(enabled) AS enabled FROM my_table

    0 讨论(0)
  • 2020-12-13 09:01

    Another way you can do it is

    SELECT enabled+0 from my_table
    
    0 讨论(0)
  • 2020-12-13 09:07

    the simplest way is ORD function:

    SELECT ORD(`enabled`) AS `enabled` FROM `my_table`
    
    0 讨论(0)
  • 2020-12-13 09:07

    Bit values are returned as binary values. To display them in printable form, add 0 or use a conversion function such as BIN().

    https://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html

    0 讨论(0)
  • 2020-12-13 09:19

    You could also try SELECT enabled&1 from my_table.

    0 讨论(0)
  • 2020-12-13 09:20

    The reason why you can't see it in terminal is because bit values are non printable characters.

    Lets insert following values:

    INSERT INTO `my_table` (`ID`, `enabled`)
    VALUES (1,b'1'),(2,b'0');
    

    Then select them to file:

    mysql> SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
    

    First lets view our /tmp/my_table.txtfile as plain text:

    "1"," "
    "2"," "

    and then in hex view:

    22 31 22 2C 22 01 22 0A 22 32 22 2C 22 00 22 0A

    To be able to see those values you can simply CAST them in SELECT:

    SELECT id, CAST(enabled AS UNSIGNED) AS enabled FROM my_table
    

    And that will produce the following output:

    +----+---------+
    | id | enabled |
    +----+---------+
    |  1 |       1 |
    |  2 |       0 |
    +----+---------+
    2 rows in set (0.00 sec)
    
    0 讨论(0)
提交回复
热议问题