I'm on a Linux RH 7.2 system, which came with Pg 7.1.2 (I think). When there, I prototyped some code that worked well, and looked like:
create table ref_sp ( name varchar(10), sname char(1), bitmask bit(6) ); insert into ref_sp values ('one', '1', b'000001'); insert into ref_sp values ('two', '2', b'000010'); insert into ref_sp values ('four', '4', b'000100'); insert into ref_sp values ('eight', '8', b'001000'); insert into ref_sp values ('sixteen', 's', b'010000'); insert into ref_sp values ('thirtytwo', 't', b'100000'); create table emp ( id int, name varchar(30), specialties bit(6) ); insert into emp values (1, 'mary_124', b'000111'); insert into emp values (2, 'joe_14st', b'110101'); Which allowed me to find out who had what bit (specialty) set with: select sp.name from emp s, ref_sp sp where s.specialties & sp.bitmask != b'0'::bit(6) and s.name = 'joe_14st' ; EXCEPT that now fails in 7.2.1 (I just upgraded this afternoon). It forces me to use "b'000000'" instead of "b'0'::bit(6)". Searching thru the docs, I find a note that says: --- Note: Prior to PostgreSQL 7.2, BIT type data was zero-padded on the right. This was changed to comply with the SQL standard. To implement zero-padded bit strings, a combination of the concatenation operator and the substring function can be used. --- Obviously the source of my problem. However, whoever wrote that note didn't say how to do it (examples are *SO* useful), and I can't imagine the solution. * Can anyone clue me into how I can do that, in SELECT / INSERT / UPDATE statements? * Or must I resort to doing the equivalent in Perl as I create the SQL? * Or is there a backward-compatibility flag? Thanks! Kevin ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])