Maison  >  Article  >  base de données  >  Comparaison de chaînes et de nombres dans MySQL (avec exemples)

Comparaison de chaînes et de nombres dans MySQL (avec exemples)

不言
不言avant
2018-12-21 10:22:134047parcourir

Le contenu de cet article concerne la comparaison des chaînes et des nombres dans MySQL (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Dans les projets, nous utilisons souvent la recherche floue, mais si nous comparons par erreur les types de chaînes et les types numériques, les résultats de la recherche ne sont parfois pas ceux attendus. Par exemple :

L'instruction XML dans mybatis est la suivante :

<if test="criteria != null and criteria.length()>0">
    AND (name like concat("%",#{criteria},"%") OR id = #{criteria})
</if>

Lors de la recherche, nous saisissons "884 test", et le résultat inclura l'enregistrement avec l'id=884, mais le nom ne correspond pas. C'est le piège de la comparaison de chaînes et de nombres MySQL : lors de la comparaison, le type de chaîne sera converti en un type entier, en commençant par la première lettre et en se terminant lorsqu'un type non numérique est rencontré.

Regardons quelques exemples :

SELECT "abc"=1;
结果:0
SELECT "1abc"=1;
结果:1
SELECT "abc"=0;
结果:1
SELECT "a2bc"=2;
结果:0

Alors, comment résoudre ce problème ? En fait, il vous suffit de faire un type ? conversion comme suit :

SELECT "2bc"=cast(2 as CHAR);
结果:0

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