sourcecode

SELECT를 사용할 때 MySQL BIT 필드 값을 볼 수 없습니다.

copyscript 2022. 11. 17. 21:22
반응형

SELECT를 사용할 때 MySQL BIT 필드 값을 볼 수 없습니다.

my_table를 포함합니다.enabled다음과 같이 정의된 필드: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

단말기에서 볼 수 없는 이유는 비트 값이 인쇄할 수 없는 문자이기 때문입니다.

다음 값을 삽입합니다.

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 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)

또 다른 방법은

SELECT enabled+0 from my_table

가장 간단한 방법은ORD기능:

SELECT ORD(`enabled`) AS `enabled` FROM `my_table`

비트 값은 이진 값으로 반환됩니다.인쇄 가능한 형식으로 표시하려면 0을 추가하거나 BIN() 등의 변환 함수를 사용합니다.

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

사용하다HEX()

예를 들어 다음과 같습니다.SELECT id, HEX(enabled) AS enabled FROM my_table

당신도 시도해 볼 수 있다.SELECT enabled&1 from my_table.

비트 필드 값을 사람이 읽을 수 있는 문자열로 변환하려면 내장된 EXPORT_SET 함수를 사용합니다. 비트(1) 유형의 열을 "Y" 또는 "N" 값으로 변환하는 간단한 예는 다음과 같습니다.

EXPORT_SET(column, 'Y', 'N')

비트(8) 값을 바이트의 이진 표현으로 변환할 수도 있습니다.

EXPORT_SET(column, '1', '0', '', 8)

언급URL : https://stackoverflow.com/questions/14248554/cant-see-mysql-bit-field-value-when-using-select

반응형