55

my_tableenabled次のように定義されたフィールドが含まれますenabled BIT NOT NULL DEFAULT 0

このテーブルには、 の複数の行enabled = b'0'と の複数の行がありenabled = b'1'ます。

ただし、これの両方:

SELECT * from my_table WHERE enabled = b'0';

この:

SELECT * from my_table WHERE enabled = b'1';

enabled列に空白を表示:

+----+---------+
| id | enabled |
+----+---------+
|  1 |         |
|  2 |         |
+----+---------+

何故ですか?enabledフィールドの値を確認するにはどうすればよいですか?


$ mysql --version
mysql  Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1

4

7 に答える 7

92

ターミナルで表示されないのは、ビット値が印刷できない文字であるためです。

次の値を挿入しましょう:

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

次に、それらを選択してファイルします。

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

まず、/tmp/my_table.txtファイルをプレーンテキストとして表示します。

「1」、「
2」、「」

次に、16進ビューで:

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

それらの値を表示できるようにするには、次のように単純CASTに入力できSELECTます。

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

そして、それは次の出力を生成します:

+----+---------+
| id | enabled |
+----+---------+
|  1 |       1 |
|  2 |       0 |
+----+---------+
2 rows in set (0.00 sec)
于 2013-01-10T01:20:07.000 に答える