UFO ET IT

이것이 SQL에서 부울 테스트를 수행하는 적절한 방법입니까?

ufoet 2020. 11. 14. 11:23
반응형

이것이 SQL에서 부울 테스트를 수행하는 적절한 방법입니까?


활성이 "부울 필드"라고 가정합니다 (작은 정수, 0 또는 1 포함).

# Find all active users
select * from users where active 

# Find all inactive users
select * from users where NOT active 

즉, "NOT"연산자를 부울 필드에 직접 적용 할 수 있습니까?


SQL의 부울은 비트 필드입니다. 이는 1 또는 0을 의미합니다. 올바른 구문은 다음과 같습니다.

select * from users where active = 1 /* All Active Users */

또는

select * from users where active = 0 /* All Inactive Users */

Postgres를 사용하면 다음을 사용할 수 있습니다.

select * from users where active

또는

select * from users where active = 't'

정수 값을 사용하려면 문자열로 간주해야합니다. 정수 값을 사용할 수 없습니다.

select * from users where active = 1   -- Does not work

select * from users where active = '1' -- Works 

MS SQL 2008은 true 또는 false의 문자열 버전을 사용할 수도 있습니다.

select * from users where active = 'true'
-- or --
select * from users where active = 'false'

SQL Server에서는 일반적으로 사용합니다. 다른 데이터베이스 엔진에 대해 잘 모릅니다.

select * from users where active = 0

개인적으로 부울에 대한 기본 유형이없는 데이터베이스의 경우 'Y'및 'N'값으로 char (1)을 사용하는 것을 선호합니다. 문자는 문자를 읽는 사람들이 이제 1이 참에 해당하고 0이 거짓에 해당한다고 가정하는 숫자보다 더 사용자가 선호합니다.

'Y'와 'N'은 (N) Hibernate를 사용할 때도 잘 매핑됩니다.


PostgreSQL은 부울 유형을 지원하므로 SQL 쿼리는 PostgreSQL에서 완벽하게 작동합니다.


SQLite3를 사용하는 경우주의하십시오.

't'또는 'f'만 필요합니다. 1 또는 0이 아닙니다. TRUE 또는 FALSE가 아닙니다.

어려운 방법을 배웠습니다.

참고 URL : https://stackoverflow.com/questions/859762/is-this-the-proper-way-to-do-boolean-test-in-sql

반응형