Maison >base de données >tutoriel mysql >Quelle est la méthode d'utilisation de la chaîne dans la condition dans MySQL
Lorsque SQL utilise in comme condition, un paramètre est utilisé pour satisfaire la condition de requête, et transmettre directement la chaîne ne peut pas satisfaire la condition.
select id,name from user where id in(?)
Utiliser la fonction FIND_IN_SET(str,strlist)
select id,name from user where FIND_IN_SET(id,#{strlist})
str
: champ conditionnelstr
: 条件字段
strlist
strlist
: ensemble de valeurs correspondantes
select id,name from user where FIND_IN_SET(id,'111,22,333')La requête MySQL dans le paramètre de condition est une chaîne avec une virgule, le résultat de la requête est fauxS'il y a le sql suivant :
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE ur.id IN (T1.limit_user) GROUP BY ur.id ) AS limit_user FROM account T1 WHERE 1 = 1T1.limit_user est la valeur interrogée dans la table des comptes
‘9,8,4&rsquo ;
Le résultat correct de la requête SQL doit être :
Non recommandé, promouvoir les clients, promouvoir les clients
Le résultat réel est :
Non recommandé
Raison :
Si dans mysql est une chaîne Si c'est le cas, elle sera automatiquement convertie en type int. La méthode suivante est utilisée en interne :CAST('4,3' AS INT)
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')🎜Corriger SQL🎜
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE FIND_IN_SET(ur.id, T1.limit_user) > 0 ) AS limit_user, T1.limit_user limit_userid FROM account T1 WHERE 1 = 1
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!