views:

25

answers:

1

If I understand correctly, the pre MySQL 5.0.3 interpretation of the BIT data type meant it could be used as a series of flags? If this is the case I can see practical uses for it in MySQL but imagine it would not have been as efficient as using SET.

Even if the above is not the case, I have great difficulty in understanding how the current implementation of the BIT data type can be practically applied in a database. If anyone is able to provide a simplified explanation and, an example of where it would be applicable, I would be grateful.

I have searched for descriptions and examples elsewhere but have been unsuccessful in finding examples applicable solely to databases.

A: 

Assume you have row with property field

Properties defined as

1  - Has property 1
2  - Has property 2
4  - Has property 3
8  - Has property 4

assign properties 1 and 2 (i.e. only 1 and 2 others will be cleaned up)

 set status = status & 3

add property 3

 set status = status | 4

remove property 1

 set status = status | 14

Select rows with properties 1 and 2

SELECT .. WHERE (Properties & 3) = 3

Select rows where properties 1 or 2

SELECT .. WHERE (Properties & 1) = 1 OR (Properties & 2) = 2

Michael Pakhantsov
Thanks, I follow some of that but I'm afraid I need a more basic description if that is possible?
OK. The following three sites (more or less in order) have cleared this up for me. I was unaware of bitwise operators and bit-shifting:http://www.blackwasp.co.uk/FlagsAttribute.aspxhttp://stackoverflow.com/questions/1936436/bit-manipulation-and-mysql-retrieval-in-phphttp://www.php.net/manual/en/language.operators.bitwise.php