URL: https://linuxfr.org/forums/programmation-sql/posts/comparaison-de-chaines-et-mysql Title: comparaison de chaines et mysql Authors: Axel Date: 2007年12月14日T13:33:53+01:00 Tags: Score: 0 ’ai renconté un petit problème sous mysql. Je voulais tester dans un trigger qu’une saisie de l’utilisateur n’était pas vide, le champ concerné étant de type entier, il pouvait prendre plein de valeurs possibles, dont le 0. Là ou ça devient rigolo, c’est que normalement MySQL considère tout comme des chaînes de caractères, le cast est implicite : mysql> SELECT 42.3456 = '42.3456'; +---------------------+ | 42.3456 = '42.3456' | +---------------------+ | 1 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT CAST(42.3456 AS CHAR) = ‘42.3456′; +———————————–+ | CAST(42.3456 AS CHAR) = ‘42.3456′ | +———————————–+ | 1 | +———————————–+ 1 row in set (0.00 sec) Super, ça simplifie la vie tout ça ! Sauf que pas de bol, pour MySQL, le 0 est un numérique particulier. mysql> SELECT 0 = ''; +--------+ | 0 = '' | +--------+ | 1 | +--------+ 1 row in set (0.00 sec) Et oui, pour comparer une variable numérique dans une routine sous mysql à la chaine vide, il faut caster, sinon le zéro passe à la trappounette. mysql> SELECT CAST(0 AS CHAR) = ''; +----------------------+ | CAST(0 AS CHAR) = '' | +----------------------+ | 0 | +----------------------+ 1 row in set (0.00 sec) Voilà, j’ai cherché un peu dans la documentation et via google, mais je n’ai pas trouvé d’explication. Donc si quelqu’un à un lien ou des explications…