gpt4 book ai didi

sql - 如何通过按位运算符操作执行 SQL JOIN?

转载 作者:行者123 更新时间:2023-12-01 22:04:59 25 4
gpt4 key购买 nike

我们有一个包含两个表的 SQL Server 2014 数据库:

enter image description here

enter image description here

在零件表中,BitColours 是引用颜色表中行的按位数字。

我们被要求生成这样的查询:

enter image description here

我以前从未做过这种类型的操作,因此非常感谢任何指导。

谢谢

最佳答案

您可以尝试通过AND位运算符(&)连接两个表。

查询 1:

SELECT
p.id,
p.part,
STUFF((
SELECT ',' + c.Colour
FROM colours c
WHERE c.BitId & p.BitColurs > 0
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') colours
FROM parts p

Results :

| id |   part |     colours |
|----|--------|-------------|
| 1 | abc123 | Red,Blue |
| 2 | xyt788 | Black,Green |

解释

& AND 按位运算符将比较来自两个值的两个二进制。

例如:

BitColor3 = 00011

这是一个示例,我忽略了二进制 16 之后的许多零。

红色

    00011
---------------------
(&) 00001 = Red (1)
---------------------
00001 = (1)

蓝色

    00011
---------------------
(&) 00010 = Blue (2)
---------------------
00010 = (2)

黑色

    00011
---------------------
(&) 00100 = Black (4)
---------------------
00000 = (0)

绿色

    00011
---------------------
(&) 01000 = Green (8)
---------------------
00000 = (0)

所以我们可以使用BitId & BitColurs进行二进制计算,得到大于0的结果就可以得到值。

关于sql - 如何通过按位运算符操作执行 SQL JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com