2011-12-02 10 views
6

Chcę przetestować niektóre oceny bez pracy przy jakimkolwiek stole. Na przykład, można napisaćUżywanie SELECT do prostej oceny BOOLEAN

SELECT 1+1 
>2 

chcę osiągnąć coś takiego:

SELECT 2 > 1 
>FALSE 

wiem, że większość silników nie mają pojęcia logicznej typu danych, ale don” t wie, jak działa ich wewnętrzna praca (nawet jeśli domyślam się, że wszystko <> 0 to true, podobnie jak w C). W każdym razie, format odpowiedzi naprawdę nie ma znaczenia, czy to true/false lub 0/1

+4

O ile życzę SQL miał rzeczywisty logiczną typ ... –

Odpowiedz

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

Edit:

SQL Server 2012 (Denali):

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

chciałbym to rozwiązanie dużo, ale nie wydają się działać na moim serwerze SQL 2008 – Raffaele

+0

Moja wina, to jest od 2012 roku : - /, Czytałem o tym wczoraj ([Denali - Funkcja logiczna - IIF() - Szybkie wprowadzenie] (http://blog.sqlauthority.com/2011/09/10/sql-server-denali- funkcja logiczna-iif-a-quick-introduction /)) i zapomniałem wersję. –

1

W Mysql i Oracle i najwyraźniej SQL-Server można u se nullif (zignoruj ​​kod from dual dla SQL-Server), więc zakładając, że przyjmujesz wartość null jako true, możesz w ten sposób poradzić sobie z testami równości bez bałaganu lub konieczności radzenia sobie z ciągami.

SQL> select nullif(1,0) from dual; 

NULLIF(1,0) 
----------- 
      1 

SQL> select nullif(1,1) from dual; 

NULLIF(1,1) 
----------- 

SQL> 
+0

Nie znałem tego konstruktu. Słuszna uwaga – Raffaele

Powiązane problemy