如何最好地解释 SQL 中的标志列

How to best go about interpreting a flags column in SQL

如标题所示,我如何最好地将标志列的 INT 值解释为简单文本?

我想让 SQL 自动解释任何给定值

介于 1 和 1023 之间(2⁰ <= x < 2¹⁰ )

其中 thix X 数只能使用

计算

(2⁰ or 2¹ or 2² or 2³ or 2⁴ or 2⁵ or 2⁶ or 2⁷ or 2⁸ or 2⁹) and only using any of the given powers of two ONCE.

简单的答案是使用“&”按位运算符。类似于:

(myValue & 1)
(myValue & 2)
(myValue & 4)
(myValue & 8)
(myValue & 16) -- etc

结果值将是 0 或您正在测试的 2 的幂。为了让事情变得简单,你总是可以把它转换成一个位,如果它不为零,它就会变成 1。

稍微长一点的回答是:我建议把它变成一个视图。这样,任何时候您需要引用特定列时,您都可以使用视图,而不必将位引用和位转换放入每个使用它们的 Proc/Query。