I have a mysql table where user permissions are stored as a bitmask:
|user | permissions | | Admin | 31 | | User | 13 | 16 8 4 2 1 Admin -> 1 1 1 1 1 -> 16 + 8 + 4 + 2 + 1 -> 31 User -> 0 1 1 0 1 -> 8 + 4 + 1 -> 13
Now I want to add a permission for every user with an sql query. Let's say I want to add the permission 16 for everyone without modifying another bit.
UPDATE users SET permission = ????
How do I do this?
1 Answer. Show activity on this post. Bits in SQL Server are always stored as 1 or 0 in a bitmap. The "Edit Table" option in SSMS just translates this to True or False for presentation purposes, this is nothing to do with how it is actually stored.
Try using CAST(columnName AS INT) AS IntValue . e.g. OR you can use CONVERT(INT, columnName) AS IntValue .
The LIMIT clause places a limit on the number of rows that can be updated. For the multiple-table syntax, UPDATE updates rows in each table named in table_references that satisfy the conditions.
To add permission 16, you just say
UPDATE users SET permission = permission | 16;
The bitwise OR operator will turn bits on. To turn them off, use a AND operation with the complement of the bit you want off:
UPDATE users SET permission = permission & ~16
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With