Chris Angelico <rosuav@xxxxxxxxx> writes: > 1) Set a bit: > UPDATE tablename SET flags=flags|8 WHERE id=1234 > 2) Clear a bit: > UPDATE tablename SET flags=flags&~8 WHERE id=1234 > However, the second statement fails; the Postgres parser tries to find > a single "&~" operator, instead of using the unary ~ and then the > binary &. Putting a space between the two symbols makes it work fine, > but I was wondering: Is this intentional behavior? Yes. Postgres allows multi-character operator names, so you need a space in general. There are exceptions for certain single-character operator names that are defined in the SQL spec (eg, a+-b is required by spec to parse as two operators), but & and ~ are not in that list. You can find the details in the fine manual, probably somewhere in the "Syntax" chapter. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general