SQL中的&符号,我不知道啥意思啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中的&符号,我不知道啥意思啊相关的知识,希望对你有一定的参考价值。

x.status & 2050 = 2050
现在查询的条件中有这么一句话,不知道啥意思,这个&是干什么用的?

2050的二进制是0100 0000 0010,与x.status与运算之后,不变的合格

&(按位 AND)
在两个整型值之间执行按位逻辑与运算。

语法
expression & expression

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式,必须由整数数据类型分类中的任何数据类型组成。expression 是经过处理并转换为二进制数字以便进行位运算的整型参数。

结果类型
如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;或者如果输入值为 tinyint,则返回 tinyint。

注释
通过从两个表达式取对应的位,位运算符 & 在两个表达式之间执行按位逻辑与运算。只有当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。

位运算符 & 只可以用在具有整型数据类型分类的表达式上。

如果左右表达式的整型数据类型不同(例如,左边 expression 的数据类型是 smallint,右边 expression 的数据类型是 int),那么将较小的数据类型的参数转换为较大的数据类型。在该示例中,数据类型为 smallint 的 expression 被转换为 int 数据类型。

示例
下面的示例创建一个具有 int 数据类型的表以显示值,并将该表放入一行中。

USE master
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise
GO
CREATE TABLE bitwise
(
a_int_value int NOT NULL,
b_int_value int NOT NULL
)
GO
INSERT bitwise VALUES (170, 75)
GO

下面的查询在 a_int_value 列和 b_int_value 列上执行按位 AND 运算。

USE MASTER
GO
SELECT a_int_value & b_int_value
FROM bitwise
GO

下面是结果集:

-----------
10

(1 row(s) affected)

170(a_int_value 或 A,如下所示 )的二进制表示为 0000 0000 1010 1010。75(b_int_value 或 B,如下所示)的二进制表示为 0000 0000 0100 1011。在这两个值之间执行按位 AND 运算所产生的二进制结果是 0000 0000 0000 1010,即十进制数 10。

(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010
参考技术A &是按位“与”操作 比如1010&0111=0010
这个查询条件的作用是一个权限判断或状态判断的谓词,就是看当前记录的status 是否符合2050(1000 0000 0010)这样的权限,其中每一个二进制位都表示一个权限,只要status对应位的数值为1,就是符合权限要求的记录,不论其它位的数值是否是1。本回答被提问者采纳
参考技术B 让你加入数值的

SQL Select 我不知道到底是啥意思

【中文标题】SQL Select 我不知道到底是啥意思【英文标题】:SQL Select i dunno what exactly meanSQL Select 我不知道到底是什么意思 【发布时间】:2018-11-23 07:35:39 【问题描述】:

我有这样的sql表

pets    playstart   endstart
cat     12:10       12:50
dog     13:10       13:50
lion    14:10       14:50

如果我选择 13:35 结果 如何为这个命令创建 sql 查询?

【问题讨论】:

日期列中的数据类型是什么? 尽量让你的问题标题更能反映你的实际问题。 “我不知道到底是什么意思”对于搜索不是很有用。 【参考方案1】:

回答问题。选择语句是旨在检索某些数据的语句。 SQL 被发明为一种人类可读的与数据库交互的方式。因此,您几乎可以将您的查询表述为一个问题。

在这种情况下,您的问题将是“13:35 会和什么宠物一起玩?”。

只要保证该表具有不重叠的“playstart”和“playend”值,这应该可以工作(我不知道您的表的名称是什么,所以我使用了“yourtable”来表示)。

select pets from yourtable where playstart <='13:35' and playend >='13:35'

【讨论】:

假设 playstart 和 playend 列是时间数据类型,也可以使用语法SELECT pets FROM yourtable WHERE '13:35' between playstart and playend; 嗨@Erlina,如果对您有帮助,您能否将我的回答标记为已接受?很高兴我能帮上忙。【参考方案2】:

请试试这个,希望对你有用

从 playstart >= '13:10' 和 endstart

【讨论】:

以上是关于SQL中的&符号,我不知道啥意思啊的主要内容,如果未能解决你的问题,请参考以下文章

sql 语句中 符号是啥意思?

这个带有全称量词的表达式是啥意思?

“somevar >> 0”是啥意思?

sql中的#是啥意思?

我不知道我的错误是啥意思: NoReverseMatch at /sssss/ Reverse for '' with arguments '(9, 19)' and keyword argument

原始音频文件中的样本字节是啥意思?