我想測試一些評估而不使用任何表。 例如,你可以寫使用SELECT進行簡單BOOLEAN評估
SELECT 1+1
>2
我要實現的是這樣的:
SELECT 2 > 1
>FALSE
我知道,大多數發動機沒有布爾數據類型的概念,但我不t知道他們的內部工作(即使我猜想所有的東西<> 0是true
,就像在C中一樣)。總之,響應的格式其實並不重要,無論是true/false
或0/1
我想測試一些評估而不使用任何表。 例如,你可以寫使用SELECT進行簡單BOOLEAN評估
SELECT 1+1
>2
我要實現的是這樣的:
SELECT 2 > 1
>FALSE
我知道,大多數發動機沒有布爾數據類型的概念,但我不t知道他們的內部工作(即使我猜想所有的東西<> 0是true
,就像在C中一樣)。總之,響應的格式其實並不重要,無論是true/false
或0/1
SELECT CASE WHEN 2 > 1 THEN 'True' ELSE 'False' END
SELECT
CASE
WHEN 2 > 1 THEN 1
ELSE 0
END
SELECT CASE WHEN 2 > 1 THEN cast(0 as bit) ELSE cast(1 as bit) END
編輯:
SQL Server 2012的(德納裏):
SELECT IIF(2 > 1, 'TRUE', 'FALSE')
我想這個解決方案有很多,但它似乎沒有我的SQL服務器上運行2008 – Raffaele
是我的錯,它從2012年的: - /,我昨天一直在讀它([Denali - 邏輯函數-IIF() - 快速介紹](http://blog.sqlauthority.com/2011/09/10/sql-server-denali-邏輯函數 - iif-a-quick-introduction /)),我忘記了版本。 –
在Mysql和Oracle和顯然SQL Server中,你可以se nullif
(對SQL-Server忽略from dual
)因此,假設您將null作爲true,那麼您可以使用這種方式處理相等性測試,而不會出現凌亂的case語句或不得不處理字符串。
SQL> select nullif(1,0) from dual;
NULLIF(1,0)
-----------
1
SQL> select nullif(1,1) from dual;
NULLIF(1,1)
-----------
SQL>
我不知道這個構造。好點子 – Raffaele
哦,我是多麼希望有SQL實際布爾類型... –