簡體   English   中英

排除不適合掩碼的值 - mySQL 中的按位運算

[英]Excluding values that don't fit the mask - Bitwise operations in mySQL

我需要幫助解決問題。 我有一個具有位掩碼值的用戶,比如說 10010001。
列名是 value_1。 在本專欄中,我將這些值與以下值進行比較:

|--|----------|  
|id|   value_1|
|--|----------|
| 1| 00000001 |
| 2| 10010001 | 
| 3| 00000010 | 
| 4| 10000001 |
| 5| 10011001 |
|--|----------|  

我的查詢是這樣的:

select value_1 from testdb
where b'10010001' & value_1;

我的結果是 ID 1,2,4,5
這看起來不錯 - 但是我如何排除 id 5,因為最低的第 4 位(從右邊數)不在源代碼中?

確保 value_1 的 value 和 mask 的組合位不會導致超過作為數字的 mask 的數字。

where (b'10010001' & value_1) and (cast((b'10010001' | value_1) as unsigned) <= cast(b'10010001' as unsigned))

超出意味着 value_1 的值中至少存在一位,但掩碼(源)中不存在。

在這里測試

假設您的 value_1 數據類型是字符串嘗試使用正確的轉換

    select value_1 from testdb
    where cast( '10010001' as unsigned )  & cast( value_1 as unsigned ) ;

暫無
暫無

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

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