2010-09-17 3 views
1

Не могу я написать что-то в TSQLTSQL Возвращает логическое значение невозможно?

declare @set1 int 
declare @set2 int 
set @set1=1 
set @set2=2 

select @set1 < @set2 

Получая верно, как результат?

Я знаю, что я могу использовать

case when @set<@set then 'true' 

, но не могу я сделать, кстати я написал выше?

+0

Еще одна причина, по которой SQL не является реальным языком. – quillbreaker

ответ

2

Нет; T-SQL не обрабатывает булевы выражения как данные. Точно так же вы не можете назначить булево выражение непосредственно в поле bit.

+0

@gbn: Возможно, я не был ясен: я говорю, что вы не можете назначить * boolean выражение * в столбец 'bit'. То есть, это не является законным: 'update MyTable set BitColumn = @ param1 <@ param2'. –

0

SQL Server не имеет «подразумеваемого» типа, который был бы логическим из выражения. На самом деле это может быть любой тип SQL-сервера, и это, возможно, соглашение, в котором говорится, что выражение является логическим в .net.

У этого есть бит типа данных, который почти как логический и отображает непосредственно в логический код клиента и принимает true или false как строки.

DECLARE @foo bit 
SET @foo = 'true' -- = 1 
Смежные вопросы