2013-04-22 16 views
5

t/f yerine 1/0 tercih ederim, bu nedenle boole değerini tamsayıya dönüştürürken ne kullanmalıyım?PostgreSQL boolean cast (0 false olarak)

select coalesce((null::boolean)::int, 0) 

VEYA

select case null::boolean when 't' then 1 else 0 end 

... başka bir şey?

cevap

12

Yaptığınız hangisi olursa olsun, bir Boolean null değeri false değerine eşit değildir, sayısal bir sıfırdan daha fazla bir değer sıfırdır.

Dene: Eğer gerçekten o zaman yanlış olarak boş tedavi etmek istiyorsa

Cast(col1 as integer) 

:

case when col1 then 1 else 0 end 

Bu kötü bir şey olacağını

+0

olsa Evet, tabii ki; Sadece benim model mantığım, nihai boş değerleri yanlış olarak görüyor. Btw, cast işlevi ile col1 :: int arasında bir fark var mı? –

+0

"CAST sözdizimi SQL ile uyumludur; sözdizimi :: ile tarihi PostgreSQL kullanımı" http://www.postgresql.org/docs/9.2/static/sql-expressions.html –

+0

@mpapec bu pişmanlık meselesi olurdu ve böyle bir duruma nasıl girdiğinizi düşünmek için. Şimdi nullların tamamen uygun olabileceği, ki bu elbette farklı bir konudur. Benim açımdan sadece bu Null <> yanlıştı –

İlgili konular