Je veux trouver une requête SQL pour trouver les lignes où le champ1 ne contient pas $x. Comment puis-je faire cela ?
Qu'est-ce que x.b? Vos lettres sont très très déroutantes. Je recommande d'utiliser un tableau ou un champ.
Je veux trouver une requête SQL pour trouver les lignes où le champ1 ne contient pas $x. Comment puis-je faire cela ?
Quel type de champ est-ce ? L'opérateur IN ne peut pas être utilisé avec un seul champ, mais est destiné à être utilisé dans des sous-requêtes ou avec des listes prédéfinies :
-- sous-requête
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- liste prédéfinie
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);
Si vous recherchez une chaîne de caractères, utilisez l'opérateur LIKE (mais cela sera lent) :
-- Trouve toutes les lignes où a ne contient pas "texte"
SELECT * FROM x WHERE x.a NOT LIKE '%texte%';
Si vous restreignez la recherche pour que la chaîne que vous recherchez doit commencer par la chaîne donnée, elle peut utiliser des indices (s'il y a un index sur ce champ) et être raisonnablement rapide :
-- Trouve toutes les lignes où a ne commence pas par "texte"
SELECT * FROM x WHERE x.a NOT LIKE 'texte%';
Qu'est-ce que x.b? Vos lettres sont très très déroutantes. Je recommande d'utiliser un tableau ou un champ.
Assurez-vous que si vous utilisez une sous-requête pour NOT IN
aucun des valeurs ne seront NULL, car NOT IN et NULL ne se combinent pas de manière évidente si vous n'êtes pas familier avec la logique à trois valeurs. Ici, vous utiliseriez SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL);
Si vous avez également besoin d'exclure les valeurs NULL, vous devrez faire ceci : SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;
SÉLECTIONNER * FROM table WHERE field1 NOT LIKE '%$x%';
(Assurez-vous d'échapper correctement $x à l'avance pour éviter les injections SQL)
Modifier : NOT IN
fait quelque chose d'un peu différent - votre question n'est pas totalement claire alors choisissez celui à utiliser. LIKE 'xxx%'
peut utiliser un index. LIKE '%xxx'
ou LIKE '%xxx%'
ne peuvent pas.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Est-ce que je peux utiliser la fonction CONTAINS() (sql) pour faire la même vérification?