Pourquoi n'y a-t-il qu'un nom de colonne mais aucun élément égal à la valeur dans MySQL ? Ce n'est pas une erreur de syntaxe ?
P粉481815897
P粉481815897 2023-09-16 10:37:20
0
1
501

Pourquoi une telle requête n’est-elle pas une erreur de syntaxe ? J'ai une expérience SQL Server et j'ai été vraiment surpris.

从 my_table WHERE id 中选择 *

Je pensais que cela validerait qu'il a une valeur, mais le comportement est incohérent, lors de l'utilisation de id, il renvoie l'emplacement avec id , mais lors de l'utilisation de name, il ne renvoie rien :

https://www.db-fiddle.com/f/enWGyAW4BtLC64PVzkbTVK/0

P粉481815897
P粉481815897

répondre à tous (1)
P粉511896716

MySQL a certains comportements qui ne sont pas conformes à la norme ANSI SQL. Dans ce cas, MySQL traite la valeur entière zéro commefalse,将任何整数非零值视为true. En SQL standard, les entiers ne sont pas les mêmes que les booléens, mais dans MySQL, ils le sont.

Lorsque vous exécutez la requêteWHERE id时,它会返回id 0la ligne.

Lorsque vous exécutez une requêteWHERE name, elle évalue la chaîne comme un entier, ce qui signifie prendre la valeur numérique du premier caractère numérique (le cas échéant) et ignorer les caractères non numériques suivants. S'il n'y a pas de chiffres en tête, la chaîne a une valeur entière de 0.

Lorsque vous exécutez une requêteWHERE name时,仅当该列中存储的字符串具有非零前导数字时,它才会返回行。在您的示例'outro', elle renverra des lignes uniquement si la chaîne stockée dans cette colonne a un nombre non nul. Dans votre exemple'outro'il ne contient que des chiffres, donc la valeur est zéro et la condition ne peut pas être satisfaite.

MySQL se comporte comme prévu, mais ce n'est pas du SQL standard.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!