Подтвердить что ты не робот

Это правильный способ выполнить логический тест в SQL?

Предположим, что активным является "булево поле" (крошечный int, с 0 или 1)

# Find all active users
select * from users where active 

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

В словах, может ли оператор "NOT" применяться непосредственно к логическому полю?

4b9b3361

Ответ 1

Логическое значение в SQL является битовым полем. Это означает, что 1 или 0. Правильный синтаксис:

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

или

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

Ответ 2

С помощью 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 

Ответ 3

MS SQL 2008 также может использовать строчную версию true или false...

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

Ответ 4

В SQL Server вы обычно используете. Я не знаю других двигателей баз данных.

select * from users where active = 0

Ответ 5

Я лично предпочитаю использовать char (1) со значениями 'Y' и 'N' для баз данных, которые не имеют родного типа для boolean. Письма больше пользователей, чем числа, которые предполагают, что те, кто его читает, теперь будут соответствовать 1, а 0 соответствует false.

'Y' и 'N' также хорошо отображается при использовании (N) спящего режима.

Ответ 6

PostgreSQL поддерживает логические типы, поэтому ваш SQL-запрос будет отлично работать в PostgreSQL.

Ответ 7

Если вы используете SQLite3, будьте осторожны:

Требуется только "t" или "f". Не 1 или 0. Не ИСТИНА ИЛИ ЛОЖЬ.

Просто усердно учился.