簡體   English   中英

SQL按位運算(MySql)

[英]SQL Bitwise operation (MySql)

所以在我的表中我有id和按位列

+----+---------+
| id | bitwise |
+----+---------+
| 1  | 1       |
| 2  | 6       |
| 4  | 60      |
+----+---------+

從我的C#代碼中,我將這些名稱設置為這些二進制值

Name1 = 0x0001,
Name2 = 0x0002,
Name3 = 0x0004,
Name4 = 0x0008,
Name5 = 0x0010,
Name6 = 0x0020,
Name7 = 0x0040,
Name8 = 0x0080,
Name9 = 0x0100,
Name10 = 0x0200,
Name11 = 0x0400,
Name12 = 0x0800

我想知道提取特定記錄的最佳方法,例如讓我們使用id = 2及其代表值

id=2應該產生Name2, Name3

目前,我不確定如何從表中select一個位,而又沒有大的If Elsecase when Statement。

我不是要您解決此問題(除非您願意),我只需要知道下一步,例如如何創建列表,或者該列表是否需要以表格格式保存

如果這些Name值在表中,則可以使用JOIN

SELECT t2.name
FROM table1 t1
JOIN table2 t2
ON t1.bitwise | t2.value = t1.bitwise
WHERE t1.id = 2

您可以像這樣寫出if語句

DECLARE @BitWiseResult varchar(max)

Select @BitWiseResult = CASE WHEN SUBSTRING(CAST(bitwise as varchar(8)),len(CAST(bitwise as varchar(8))) -1 , len(CAST(bitwise as varchar(8)))) like '1' THEN 'Name1, ' END 
                + CASE WHEN SUBSTRING(CAST(bitwise as varchar(8)),len(CAST(bitwise as varchar(8))) -1 , len(CAST(bitwise as varchar(8)))) like '2' THEN 'Name2, ' END
                + CASE WHEN SUBSTRING(CAST(bitwise as varchar(8)),len(CAST(bitwise as varchar(8))) -1 , len(CAST(bitwise as varchar(8)))) like '4' THEN 'Name3, ' END
...
....
.....           
FROM TableWithBitwiseNumber
WHERE id = 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM