Maison > base de données > tutoriel mysql > Quelle est la méthode d'utilisation de la chaîne dans la condition dans MySQL

Quelle est la méthode d'utilisation de la chaîne dans la condition dans MySQL

王林
Libérer: 2023-05-31 10:17:03
avant
1825 Les gens l'ont consulté

La condition in dans MySQL utilise des chaînes

Scénario

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(?)
Copier après la connexion

Méthode

Utiliser la fonction FIND_IN_SET(str,strlist)

select id,name from user where FIND_IN_SET(id,#{strlist})
Copier après la connexion
  • str : champ conditionnelstr: 条件字段

  • strlist

strlist : ensemble de valeurs correspondantes

select id,name from user where FIND_IN_SET(id,'111,22,333')
Copier après la connexion

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 faux

S'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 = 1
Copier après la connexion

T1.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)
Copier après la connexion

Parce que la virgule est écrite par erreur sous forme de point-virgule, "4,3" devient "4;", donc le le résultat de la requête ci-dessus SQL ne contient que le premier.

Solution🎜
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')
Copier après la connexion
🎜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
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal