Булево выражение как значение столбца в транзакции SQL - PullRequest
6 голосов
/ 03 марта 2011

В большинстве RDBMS: es эта работа:

select (5 > 3)

и оценивается как true.Это не работает в MS Transact SQL, и единственный найденный мной обходной путь - написать:

select case when 5 > 3 then 1 else 0 end

Какой тип отстой, потому что он гораздо более многословный.Есть ли лучший способ выписать вышеуказанные виды чеков?

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

Если проблема арифметического сравнения:

select (5 - 3)

Затем на тесте прикладного уровня для <или = или> 0.

0 голосов
/ 03 марта 2011

Вы можете написать ее как скалярную функцию, но она будет очень медленной для больших наборов данных.

0 голосов
/ 03 марта 2011

Если вашей программе часто требуются такие конструкции case, вы можете создать свой набор функций, которые будут иметь пользовательские функции, такие как Bool_IsGreater(left, right), которые будут возвращать вам желаемые 0 или 1.

SQL Server в любом случае не поддерживает тип логического значения даже для базового использования столбца.

Если вам нужна производительность, и эти 5 и 3 значения происходят из какого-то запроса на выборку, вы можете создать новый столбец и установить его значение равным 1 или 0 с помощью триггера или чего-то еще, что может повысить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...