Maison >base de données >tutoriel mysql >Présentation des opérations sur bits Mysql pour simplifier les relations un-à-plusieurs

Présentation des opérations sur bits Mysql pour simplifier les relations un-à-plusieurs

coldplay.xixi
coldplay.xixiavant
2020-12-18 09:21:263241parcourir

Tutoriel MySQLLa colonne présente des opérations sur les bits pour simplifier les relations un-à-plusieurs

Présentation des opérations sur bits Mysql pour simplifier les relations un-à-plusieurs

Recommandé (gratuit) : Tutoriel MySQL

Syntaxe

& : ET au niveau du bit, les bits binaires sont tous à 1 en même temps Régler sur 1.
| : OU au niveau du bit, si un bit binaire est 1, il est 1.
^ : XOR au niveau du bit, lorsque les nombres binaires des bits correspondants sont différents, le résultat du bit correspondant sera 1 ; si les deux Si tous les chiffres correspondants sont 0 ou 1, le résultat du chiffre correspondant est 0.

Principe

$a = 6 转化为2进制为 110
$b = 3 转化为2进制为 11
$a & $b即是 110 与 11
将$a和$b中都为1的位设为1,位数不够的补0.即110 与 011
运算结果010,转化为十进制结果为2

Scénario d'application

Chaque attraction contient de nombreux attributs, tels que des mois propices au tourisme, notre général Là peut être deux méthodes :

  1. consiste à ajouter un champ varchar et à enregistrer chaque mois séparé par un symbole spécial, par exemple : "1,2,22,65,7"
  2. pour créer une table de relations , ici, vous ne pouvez pas utiliser les nombres 1 à 12 pour représenter le mois, mais utilisez 1,2,4,8,16,32,64,128,512,1024,2048,4096 pour le représenter. S'il y a plusieurs mois, ils peuvent être combinés et ajoutés les uns aux autres, puis stockés sous forme de valeur.
    Par exemple, dans les mois 1, 10 et 12, la valeur 1+512+4096=4609, 4096 peut être stockée.

Cette technique convient aux scénarios un-à-plusieurs avec moins d'attributs. S'il y en a trop, il est recommandé de le faire. essayez la table de relation. Les attributs couramment utilisés incluent : le mois, le type de rappel de message, diverses combinaisons de types limitées, etc.

Conseils :

-- 添加一个分类 用 “|”
SELECT (4|2|1); --- = 7

-- 去掉一个分类,用“^”
SELECT 7 ^ 1;

-- 当我们需要查询某个月份的景点时,例如查询3月份的景点,可使用以下语句:
SELECT * FROM `spots` WHERE `month` & 4 = 4;

-- 当设置某个景点适合某个月份时,例如设置4325的景点适合2月份,可使用下面的语句:
    
UPDATE `spots` SET `month` = `month` | 2 WHERE `id` = 4325

-- 当取消设置某个景点的月份时,可使用下面的语句:
UPDATE `spots` SET` month` = `month` ^ 2 WHERE`id`= 4325

-- 查询同时适合多个月份的数据,例如需要查询设置了11,12,1月份的景点,将其三个月份对应的数值加起来,结果为6145,然后使用这个数值进行查询:

SELECT * FROM `spots` WHERE `month` & 6145 = 6145

-- 查询只要适合,1,11,12月份其中一个月份的景点就行
SELECT * FROM `spots` WHERE (`month` & 4096 = 4096) or (`month` & 2048 = 2048) or (`month` & 1 = 1)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer