2011-12-02 64 views
6

我想測試一些評估而不使用任何表。 例如,你可以寫使用SELECT進行簡單BOOLEAN評估

SELECT 1+1 
>2 

我要實現的是這樣的:

SELECT 2 > 1 
>FALSE 

我知道,大多數發動機沒有布爾數據類型的概念,但我不t知道他們的內部工作(即使我猜想所有的東西<> 0是true,就像在C中一樣)。總之,響應的格式其實並不重要,無論是true/false0/1

+4

哦,我是多麼希望有SQL實際布爾類型... –

回答

12
SELECT CASE WHEN 2 > 1 THEN 'True' ELSE 'False' END 
4
SELECT 
    CASE 
    WHEN 2 > 1 THEN 1 
    ELSE 0 
    END 
4
SELECT CASE WHEN 2 > 1 THEN cast(0 as bit) ELSE cast(1 as bit) END 
3

編輯:

SQL Server 2012的(德納裏):

SELECT IIF(2 > 1, 'TRUE', 'FALSE') 
+0

我想這個解決方案有很多,但它似乎沒有我的SQL服務器上運行2008 – Raffaele

+0

是我的錯,它從2012年的: - /,我昨天一直在讀它([Denali - 邏輯函數-IIF() - 快速介紹](http://blog.sqlauthority.com/2011/09/10/sql-server-denali-邏輯函數 - iif-a-quick-introduction /)),我忘記了版本。 –

1

在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> 
+0

我不知道這個構造。好點子 – Raffaele