MySQL : 유형이 비트 인 열을 쿼리하는 방법은 무엇입니까?
문제
안녕하세요 저는 Hibernate와 MySQL을 사용하고 있습니다. 'Active'라는 부울 속성이있는 클래스가 있습니다.
생성 된 데이터베이스 테이블에는 비트 데이터 유형이 있습니다. 여태까지는 그런대로 잘됐다. 이 값을 쿼리하고 싶지만 어떻게 해야할지 모르겠습니다. 난 노력 했어
SELECT * from table where active = 1
작동하지 않습니다
SELECT * from table where active = true
참조 매뉴얼이나 StackoveFlow에서는 아무것도 찾지 못했습니다.
힌트가 있습니까?
미리 감사드립니다!
해결책
SELECT * FROM table WHERE active = (1)
다른 팁
비트 값을 지정하려면 B'Value '표기법을 사용할 수 있습니다.
비교를 위해 정수에 캐스팅 해 보셨습니까?
SELECT * from table where cast(active as unsigned) = 1
나는 MS SQL을 대부분 사용하므로 테스트 할 수 없으므로 이것이 효과가 없다면 용서하십시오.
실제로 MySQL에는 비트 리터럴이 내장되어 있습니다.
select*from table where active = 0b1
글쎄, 비교와 업데이트를 위해 0과 1은 나에게 효과가 있습니다.
다음은 유형 비트 (1), 한 행, 필드는 현재 거짓입니다.
mysql> select isfeatured from nodes where isfeatured = 1;
Empty set (0.00 sec)
mysql> select isfeatured from nodes where isfeatured = 0;
+------------+
| isfeatured |
+------------+
| |
+------------+
1 row in set (0.00 sec)
ISFEATURED에서 0에서 1으로 변경하는 업데이트, 유형 비트 (1) ...
mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
한 행이 변경되었습니다 ... 다시 시도하십시오.
mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
예상대로 행이 변경되지 않았습니다.
이전과 동일한 쿼리를 선택합니다.
mysql> select isfeatured from nodes where isfeatured = 1;
+------------+
| isfeatured |
+------------+
| |
+------------+
1 row in set (0.00 sec)
mysql> select isfeatured from nodes where isfeatured = 0;
Empty set (0.01 sec)
작동합니다.
사용 중입니다 :
MySQL VER 14.14 Distrib 5.5.31, Debian-Linux-GNU (x86_64)를 사용하여 Readline 6.2
그리고
/usr/sbin/mysqld ver 5.5.31-0+x86_64의 데비안-리눅스 -gnu 용 wheezy1 (Debian)
제휴하지 않습니다 StackOverflow