2011-12-02 32 views
6

Tôi muốn kiểm tra một số đánh giá mà không làm việc trên bất kỳ bảng nào. Ví dụ, bạn có thể viếtSử dụng SELECT để đánh giá BOOLEAN đơn giản

SELECT 1+1 
>2 

tôi muốn đạt được một cái gì đó như thế này:

SELECT 2 > 1 
>FALSE 

Tôi biết rằng hầu hết động cơ không có khái niệm về một kiểu dữ liệu boolean, nhưng tôi don' t biết cách làm việc nội bộ của họ (ngay cả khi tôi đoán mọi thứ <> 0 là true, như trong C). Dù sao, định dạng của các phản ứng thực sự không quan trọng, cho dù đó là true/false hoặc 0/1

+4

Oh bao nhiêu Tôi muốn SQL có một thực tế kiểu boolean ... –

Trả lời

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

Tôi muốn giải pháp này rất nhiều, nhưng nó dường như không làm việc trên máy chủ SQL 2008 của tôi – Raffaele

+0

lỗi của tôi, đó là từ năm 2012 : - /, Tôi đã đọc về nó ngày hôm qua ([Denali - Chức năng logic - IIF() - Giới thiệu nhanh] (http://blog.sqlauthority.com/2011/09/10/sql-server-denali- logic-function-iif-a-quick-introduction /)) và tôi đã quên phiên bản. –

1

Trong Mysql và Oracle và dường như SQL-Server bạn có thể se nullif (bỏ qua from dual cho SQL-Server) vì vậy, giả sử bạn lấy giá trị rỗng là true thì bạn có thể đối phó với thử nghiệm bình đẳng theo cách này mà không có tuyên bố trường hợp lộn xộn hoặc phải xử lý chuỗi.

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

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

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

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

SQL> 
+0

Tôi không biết cấu trúc này. Điểm tốt – Raffaele

Các vấn đề liên quan