首页 > 解决方案 > 一个简单的 sql 查询需要解释它是如何给出输出的?

问题描述

我从某人那里得到了这个查询,我在 SQL Server 2012 中查询了这个

Select 20 | 25 as test

开/关 : 29

select 20 & 25 as test

生产/生产:16

select 10 | 25 as test

开/关:27

select 10 & 25 as test

开/关 : 8

我需要对此输出进行逐步解释,任何人都可以帮助我。

标签: sqlsql-serversql-server-2012

解决方案


  1. 与运算符为 OR 的binary calculatorsSQL Serverdoes not add值不同,它使用pipe character(|) 表示按位 OR 运算符。如果一位或两位为 1,则返回 1
  2. 1如果两个位都是AND,则返回1。任何一个位都是0它返回0

您正在寻找的分步说明

选择 20 | 25 作为测试<-- 我们将首先为这个做

首先它将这些值转换为二进制,即

  1. 20 = 10100
  2. 25 = 11001

现在,如果一个或两个位为 1,则返回 1,否则返回 0。

考虑到这一点,结果是11101,即29

选择 20 和 25 作为测试 <-- 现在让我们看看这个

转换为二进制 -

  1. 20 = 10100
  2. 25 = 11001

& 如果两个位都是 1 则返回 1 否则返回 0

据此,结果是10000,即16


推荐阅读