Maison > base de données > tutoriel mysql > Comment formater correctement les variables MySQL à utiliser dans une clause « NOT IN » ?

Comment formater correctement les variables MySQL à utiliser dans une clause « NOT IN » ?

Mary-Kate Olsen
Libérer: 2024-12-31 20:32:10
original
918 Les gens l'ont consulté

How to Correctly Format MySQL Variables for Use in a

Format de variable MySQL pour une liste de valeurs « NOT IN »

Lors de la tentative d'exclusion de certaines valeurs dans une requête MySQL à l'aide d'une liste « NOT IN », l'attribution d'un variable aux valeurs exclues peut être une solution pratique. Cependant, il est crucial de garantir le bon format de variable.

Comme décrit dans votre requête, vous avez essayé d'attribuer la variable '@idcamposexcluidos' avec différents formats :

  • SET @idcamposexcluidos='817,803,495 ';
  • ENSEMBLE @idcamposexcluidos='(817,803,495)';
  • SET @idcamposexcluidos=817,803,495;

Cependant, aucun de ces formats ne fonctionne comme prévu. La raison en est que la clause « IN » nécessite des valeurs distinctes, et non une seule chaîne. Par conséquent, la requête :

WHERE id_campo not in (@idcamposexcluidos)
Copier après la connexion

devient effectivement :

WHERE id_campo not in ('817,803,495')
Copier après la connexion

ce qui est incorrect. Les valeurs doivent être fournies sous forme de chaînes littérales distinctes :

WHERE id_campo not in ('817','803','495')
Copier après la connexion

Pour résoudre ce problème, il existe deux options :

  1. SQL dynamique : Créer la requête dynamiquement en utilisant une concaténation des valeurs exclues.
  2. MySQL FIND_IN_SET() Fonction : Utilisez la fonction FIND_IN_SET() pour vérifier si la valeur existe dans la liste des valeurs exclues séparées par des virgules, comme indiqué ci-dessous :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Copier après la connexion

Notez que l'utilisation de FIND_IN_SET() la fonction peut nuire à l’utilisation de l’index.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal