Re: Shouldn't B'1' = 1::bit be true?
От | Bill Moran |
---|---|
Тема | Re: Shouldn't B'1' = 1::bit be true? |
Дата | |
Msg-id | 404E61CA.8050908@potentialtech.com обсуждение исходный текст |
Ответ на | Shouldn't B'1' = 1::bit be true? (Bill Moran <wmoran@potentialtech.com>) |
Список | pgsql-general |
Stephan Szabo wrote: > On Wed, 3 Mar 2004, Bill Moran wrote: > > >>Am I missing something here? >> >>agelis=# select B'1'::int; >> int4 >>------ >> 1 >>(1 row) >> >>agelis=# select 1::bit; >> bit >>----- >> 0 >>(1 row) >> >>agelis=# select B'1'=1; >> ?column? >>---------- >> f >>(1 row) >> >>Last I checked, binary 1 and integer 1 were equal. Is this a bug, or is there >>a reason for this that I need educated on? Why does int 1 cast to binary 0? > > Hmm, on my 7.4 machine, I get an error saying that there's no = operator > for bit and integer. If I cast the B'1' into an integer I get a true > result. > > The reason for 1::bit being 0 is that int4 -> bit(n) casts cast to a 32 > bit bit string. IIRC, when bit strings are truncated for size in casts, > the spec says to take from the left. Yeah. I made some changes to the casting config, so that int to bit is cast automatically, instead of requiring an explicit cast. It made the code I was converting easier to manage. I dont' know why my original email took so long to hit the list, but I did find out the same thing you just described. In the end I ended up converting all the bit functions to int, so that I don't have to deal with the casting pecularities, which just seemed like the easiest solution at the time. -- Bill Moran Potential Technologies http://www.potentialtech.com
В списке pgsql-general по дате отправления: