2010-03-06 66 views
6

Về cơ bản tôi muốn thay đổi giá trị boolean chọn từ bảng:Làm thế nào để thay đổi giá trị boolean trong truy vấn chọn SQL Server?

ví dụ .:

SELECT otherColumns, not ysnPending FROM table 

Tôi cần một cột ysnPending = true nếu giá trị là false & false nếu giá trị là đúng.

Có chức năng nào để thay đổi giá trị Boolean hay tôi nên sử dụng IIf hoặc CASE ...?

+0

Vui lòng hiển thị giản đồ bảng của bạn. –

+0

ysnPending là loại Bit – Vikas

+0

ysnPending cũng có thể bị vô hiệu – Vikas

Trả lời

3

sử dụng CASE, hoặc nếu trường bit là không nullable bạn chỉ có thể trừ từ 1.

SELECT 
    otherColumns, 
    (1 - ysnPending) -- NOT ysnPending 
FROM table 

(Sử dụng CASE có thể dẫn đến mã dễ hiểu hơn.)

Nếu ysnPending là nullable, bạn chỉ định hành vi nào cho NOT?

+0

SELECT otherColumns, CASE WHEN ysnPending = NULL THEN 1 WHEN ysnPending = 0 THEN 1 WHEN ysnPending = 1 THEN 0 Kết thúc bảng FROM làm việc cho tôi! – Vikas

+0

Bản đồ NULL thành True? OK nếu đó là những gì bạn cần. –

+0

@Vikas - bạn có thể muốn sử dụng: "WHEN ysnPending IS NULL" thay vì "WHEN ysnPending = NULL". –

0

Ví dụ sử dụng một tuyên bố trường hợp:

create table table1 (id int not null, ysnPending bit null) 
insert table1 values (1, 1) 
insert table1 values (2, null) 
insert table1 values (3, 0) 

select id, cast((case when ysnPending = 1 then 0 else 1 end) as bit) as Not_ysnPending from table1 

Giả bạn muốn 1 trả lại khi ysnPending là NULL.

Loại truyền vào bit là để đảm bảo rằng cột được trả về là kiểu dữ liệu BIT. Nếu bạn bỏ nó ra, nó sẽ trả về một loại INTEGER. (Điều này có thể hoặc có thể không quan trọng với bạn, tùy thuộc vào cách chính xác bạn sẽ sử dụng tập kết quả trả về).

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