|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
Bonjour,
b et gridb sont 2 champ tinyblob exple du contenu de ces 2 champs: b gridb 0100 0100 0010 0100 1000 0100 0100 0100 Je voudrais faire un ET, j'ai essaye comme cela ( b && gridb), mais le résultat est incohérent Voici le résultat que je devrais obtenir b gridb (b et gridb) 0100 0100 0100 0010 0100 0000 1000 0100 0000 0010 0010 0010 Merci pour votre aide. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 604 ![]() |
Bonsoir,
montre nous ta requête complète s'il te plaît. |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
ma requete :
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 604 ![]() |
ta requête n'est pas bonne,
tu veut afficher les deux colonnes ?Que veut tu que ta requête retourne comme résultat exactement ? ( les couples b et gridb qui ont la même valeur même sur des lignes différentes ?) |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
Non, je veux faire un ET logique entre B et gridb
b contient 0100 0010 1000 0010 gridb contient 0100 0100 0100 0010 b && gridb devrait etre ( marche tres bien en php ) 0100 0000 0000 0010 |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
salut,
non si tu fais && ou & en php c'est pas du tout pareil... le et logique c'est & car && considère à 1 n'importe quelle valeur non null ou différente de 0, idem pour || par exemple avec des valeur binaires: 0100 && 0010 = 0001 alors que 0100 & 0010 = 0000 0100 || 0010 = 0001 alors que 0100| 0010 = 0110 c'est la différence entre le "et, ou, etc... logiques" (comme il l'appellent) qui sert à faire des test dans un if et les fonctions logiques équivalentes en mode "bitwise" (bit à bit) si tu tiens vraies fonctions logiques c'est les fonctions bitwise... dans mysql ç prend des bigint en entrée après ce que tu utilises pour stocker tes valeur c'est quoi? la chaine de caractères équivalent au binaire? le binaire sous forme hexa réelle ou sa représentation sous forme de chaine en hexa? tu vois rien à voir en terme de traitement selon le cas
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#7 | ||
![]() ![]() |
En l'occurrence, ici, pour faire le ET logique, il suffit de vérifier si les deux chaînes sont égales :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
@ericd69
je le stocke avec une chaine de 0,1 en tinyblob visuellement dans phpadmin on voit 00110110000101010100 @CinePhil la j'ai pris un exple sinon je compare cela 00110110000101010100 a cela 01000001101011100010 |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
je cherche a faire cela en sql -> 0100 & 0010 = 0000 donc c'est bien le &
quand je fais cela j'obtient un resultat bizarre -> 1000 & 0100 = 96 dans ce cas il devrait etre 0 |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
faut que tu fasses du transtypage ou que tu fasses une requête préparée pour manipuler ce texte alors
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#11 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
Je trouve cela un peu lourd comme requete
Code :
Merci |
||
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
un exemple:
qui donne bien 5 soit 0101&0111=0101=5
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 107 ![]() |
@ericd69
Cree une table avec 2 champ b, gridb (tinyblob) rentre les valeurs b=1000 gridb=0100 et donne moi des nouvelles |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
as tu au moins essayé d'appliquer:
Code sql :
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
||
|
|
00
|
|
|
#15 |
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Ceci fonctionne presque ( Il manque les zéros en entête) :
Code :
SELECT CONV(CONV(b,2,10) & CONV(gridb,2,10),10,2) FROM GRILLE |
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
pourquoi faire un conversion en base 10? ça sert à rien...
pour combler il suffit d'utiliser lpad... sinon conv et les fonctions logiques sont limités à 64 bits maxi pour info
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#17 | |
![]() ![]() |
Citation:
D'après ce que je comprends de ton exemple donné plus haut, tu dois obtenir une série de zéro si les deux colonnes n'ont pas la même valeur, non ? As-tu essayé ma requête ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#18 |
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
|
|
|
00
|
|
|
#19 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
eviter ta conversion finale lol
tu pars de la base 2 et tu ne cherches pas à en sortir, on triture du binaire, le seul problème étant au départ de partir de la forme texte pour en faire un nombre en faisant comprendre à mysql que c'est du binaire et pas du décimal... bien sur que ton truc marche tu fais juste une conversion en plus pour rien tu peux mettre 2,2 ou 2,10 c'est pareil pour le calcul mais le premier lui fait afficher du binaire l'autre pas c'est la différence... ![]()
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#20 | |||
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
J'ai fait quelques tests :
Code :
Citation:
Ou plus simple : Code :
SELECT CONV('1000',2,2) & CONV('0100',2,2) |
|||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com