Существует ли способ получить булевскую переменную, не бросая в SQL Server?

Я нашел это очень странным, что простой код как это не действителен:

select * from table where field=true

Альтернатива, по-видимому, являющаяся

select * from table where field='true'

Хорошо, угадайте, что я могу жить с этим. По той или иной причине я должен был недавно сделать что-то вроде этого:

select true as somefield,...

Альтернатива для разбираний в типах и все было намного более ужасным хотя:

select cast('true' as bit) as somefield,...

Я пропускаю что-то? Разве существуют ли на самом деле некоторые созданные способом получить истинное или ложное значение как булевскую переменную без кастинга?

8
задан Earlz 22 June 2010 в 17:27
поделиться

4 ответа

Sql Server не имеет логического типа данных, который вы можете хранить в таблице, но он содержит битовый тип данных, который вы можете хранить.

Однако ключевое слово true , которое вы видите, ЯВЛЯЕТСЯ логическим значением. Sql Server использует только логический тип данных для результатов своих операторов сравнения, которые могут возвращать три значений: TRUE, FALSE и UNKNOWN.

Важно знать разницу между ними.

SELECT *
FROM Table
WHERE Field = 1 --Field = true

Для хранения логических значений в таблице используйте битовый тип данных. Используйте 1 для истинного , 0 для ложного и Null для неизвестного .

6
ответ дан 5 December 2019 в 04:49
поделиться

Используйте 1 или 0, если ваш поле имеет тип бит.

select * from table where field=1

select * from table where field=0
3
ответ дан 5 December 2019 в 04:49
поделиться

Я хочу добавить ко всем текущим ответам только еще один метод для получения логического без преобразования в SQL Server:

DECLARE @myTrue bit = 1;
-- or two lines for old version of SQL Server
-- DECLARE @myTrue bit;
-- SET @myTrue = 1;

SELECT @myTrue AS somefield
4
ответ дан 5 December 2019 в 04:49
поделиться

Биты - это тип данных, наиболее часто используемый для представления булевых значений в TSQL. Обычно я делаю примерно так

select CAST(1 as bit) as somefield
20
ответ дан 5 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: