Skip to content

Instantly share code, notes, and snippets.

@hoganlong
Created February 16, 2012 16:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hoganlong/1846338 to your computer and use it in GitHub Desktop.
Save hoganlong/1846338 to your computer and use it in GitHub Desktop.
Example of BitField in SQL / TSQL / SQLServer
CREATE TABLE [dbo].[testBF](
[field1] [varchar](max) NOT NULL,
[field2] [varchar](max) NOT NULL,
[bitfield] [int] NOT NULL CONSTRAINT [DF_testBF_bitfield] DEFAULT ((0))
) ON [PRIMARY]
INSERT INTO testBF(field1,field2)
VALUES ('F1start1','F2start1');
INSERT INTO testBF(field1,field2)
VALUES ('F1start2','F2start2');
INSERT INTO testBF(field1,field2)
VALUES ('F1start3','F2start3') ;
SELECT field1, field2,
CASE WHEN (bitfield & 1) = 1 THEN 'field1 mod' ELSE 'field1 same' END,
CASE WHEN (bitfield & 2) = 2 THEN 'field2 mod' ELSE 'field2 same' END
FROM testBF
SELECT field1, field2,
CASE WHEN (bitfield & 1) != 0 THEN 1 ELSE 0 END AS [field1flag],
CASE WHEN (bitfield & 2) != 0 THEN 1 ELSE 0 END AS [field2flag]
FROM testBF
UPDATE testBF
SET field1 = 'f1new', bitfield = bitfield | 1
WHERE field1 = 'F1start1'
UPDATE testBF
SET field2 = 'f2new', bitfield = bitfield | 2
where field1 = 'F1start2'
SELECT field1, field2,
CASE WHEN (bitfield & 1) = 1 THEN 'field1 mod' ELSE 'field1 same' END,
CASE WHEN (bitfield & 2) = 2 THEN 'field2 mod' ELSE 'field2 same' END
FROM testBF
SELECT field1, field2,
CASE WHEN (bitfield & 1) != 0 THEN 1 ELSE 0 END AS [field1flag],
CASE WHEN (bitfield & 2) != 0 THEN 1 ELSE 0 END AS [field2flag]
FROM testBF
@hoganlong
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment