0
votes

Mysql sélectionnez où valeur = 0



2 commentaires

Pouvez-vous s'il vous plaît lire Pourquoi devrais-je fournir un exemple de reproductible minimal pour une requête SQL très simple? et arrêtez d'utiliser des images? ..


Pourquoi alliez-vous comparer une chaîne telle que Global IT approvisionnement avec '0' ou 0 ?


3 Réponses :


0
votes

Pour la valeur littérale MySQL Utilisez une citation unique

SELECT * FROM person_task WHERE title_included = '0';


0 commentaires

5
votes

où titre_included = 0 code> p>

Vous comparez une chaîne à un entier. En faisant cela, MySQL convertit la chaîne en un type de données numérique. À moins que votre chaîne ne commence avec un numéro, le résultat est 0 code>. D'où toutes les enregistrements correspondent. P>

où titre_inclued = "0" code> (Remarque: doit être '0' code>) p> BlockQuote>

Vous faites comparaison de string. Les choses fonctionnent comme on pouvait s'y attendre. P>

Bottom Line: Connaissez vos fichiers de données; Passez le type de données approprié dans les requêtes pour éviter la conversion implicite. Si vous souhaitez comparer une chaîne, comparez-la avec une chaîne em>. P>


Ceci est expliqué dans le manuel : p>

Dans tous les autres cas, les arguments sont comparés comme des nombres de point variant (réel). Par exemple, une comparaison des opérandes de chaîne et numériques prend des endroits comme une comparaison des nombres à virgule flottante. P> BlockQuote>

Voici un exemple de ce qui se passe sous la hotte lorsque vous faites une chaîne en integer Comparaison: P>

| cast('1a' as float) |
| ------------------: |
|                   1 |


2 commentaires

Pourquoi Tous les enregistrements correspondent à avec = 0 ?


Parce que toutes les chaînes sont converties en un nombre et devient 0 ... Voir les exemples de ma réponse.



0
votes

Je crois que c'est parce que 0 et "0" ne sont pas identiques, c'est 0 === "0" est faux, 0 est un entier et "0" est une chaîne


3 commentaires

Aussi === n'est pas une chose en SQL, il est simplement simplement = quand vous voyez Ceci Vous serez choqué comment MySQL Auto DataType de type AS 0 =" 0 " est 1 (true ) dans mysql. .


Ya, je sais qu'il n'y a pas === dans MySQL, utilisait simplement une manière abrégée d'exprimer ce que je disais. Je viens de vérifier le violon, incroyable.


"J'utilisais simplement une manière sténique d'exprimer ce que je disais" quand quelqu'un lit === il doit savoir que c'est un opérateur PHP et est utilisé comme Vérification de la valeur égale lorsque le type de données doit également être le même .. PHP n'est pas étiqueté ici.