sql-server - CONVERT(INT, N_TYPE)&128 是做什么的?
问题描述
我目前正在处理其他人所做的几个 SQL 函数,我得到了我无法解释的结果。
分解的部分如下所示:
SELECT
N_TYPE,
CONVERT(INT, N_TYPE)&128,
CONVERT(INT, N_TYPE)&64
FROM TBL_EXAMPLE
N_TYPE 是一个十进制 (10,0) 字段。我返回的一些示例:
+-----------+-------------+------------+
| N_TYPE | CONVERT 128 | CONVERT 64 |
+-----------+-------------+------------+
| 0 | 0 | 0 |
| 200 | 128 | 64 |
| 136 | 128 | 0 |
| 32 | 0 | 0 |
| 536870912 | 0 | 0 |
| 72 | 0 | 64 |
+-----------+-------------+------------+
如果 N_TYPE 高于这些值,我认为它分别返回 64 或 128,但事实并非如此(如上面在 N_TYPE=136 处看到的,其中不返回 64)。
那么,这实际上是做什么的呢?
解决方案
第一部分是将N_TYPE
列转换为int
. 第二部分是使用
按位 AND 运算符&
的运算符。
因此,如果您应用x & 64
,如果未设置右侧的第 7 个二进制数字,您将获得 0 值,如果该数字设置为 1,您将获得 64。
推荐阅读
- flutter - 从外部更新 RepaintBoundary 内部
- generics - 通用数学运算符重载而不复制
- docker - 有没有办法将 USER 保留在 docker 基础映像上?
- c++ - 将一对映射到结构
- r - 如何在 r 中使用 VIF?
- excel - 在空白单元格下方的行中注入公式
- python - 在 Python 中根据时间序列数据分配组号
- laravel - 在 laravel 上更改 vuetify 主题
- javascript - 在数组对象中添加值
- cntk - 在训练 ONNX 的预训练模型 Emotion FerPlus 时抛出异常 'cuDNN failure 8: CUDNN_STATUS_EXECUTION_FAILED'