Je veux trouver une requête SQL pour trouver des lignes où field1 ne contient pas $ x. Comment puis-je faire ceci?
Répondre
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 les sous-requêtes ou des listes prédéfinies:
-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);
Si vous êtes à la recherche d'une chaîne, optez pour l'opérateur LIKE (mais ce sera lent) :
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';
Si vous restreignez pour que la chaîne que vous recherchez doit commencer par la chaîne donnée, il peut utiliser des indices (s'il existe un index sur ce champ) et être raisonnablement rapide:
-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';
qu'est-ce que x.b? Vos lettres sont très très confuses. Je recommande d'utiliser la table ou le champ. – Whitecat
Assurez-vous que si vous utilisez une sous-requête pour 'NOT IN' qu'aucune des valeurs ne sera NULL, car [NOT IN et NULL ne se combinent pas de façon évidente] (https://stackoverflow.com/questions/129077/ valeurs non-dans-clause-et-null) si vous n'êtes pas familier avec la logique à trois valeurs. Ici vous utiliseriez 'SELECT a FROM x où xb NOT IN (SELECT b FROM y WHERE b n'est pas NULL);' Si vous avez également besoin d'exclure les valeurs NULL, vous devez faire ceci: 'SELECT a FROM x WHERE xb NOT IN (SELECT b FROM y O WH b n'est pas NULL) et xb N'EST PAS NULL; ' –
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(Assurez-vous d'échapper à $ x correctement avance pour éviter l'injection SQL)
Edit: NOT IN
fait quelque chose d'un peu différent - votre question n'est pas tout à fait claire pick donc que l'on à utiliser. LIKE 'xxx%'
peut utiliser un index. LIKE '%xxx'
ou LIKE '%xxx%'
ne peut pas.
Qu'est-ce qui est considéré comme s'échapper correctement? Je sais qu'avec des cordes normales, il suffit d'échapper à certaines choses, mais LIKE a des caractères spéciaux supplémentaires. –
- 1. Sql La requête ne fonctionne pas!
- 2. CakePHP: Rechercher où le champ n'est pas nul
- 3. web.config ne contient pas de section d'appartenance
- 4. ASP classique - Split et contient dans une simple requête SQL
- 5. Champ de mise à jour Sqlite s'il contient
- 6. Optimize y = x * x dans le champ Galois arithmétique
- 7. La requête SQL ne fonctionne pas avec UNION?
- 8. C#: System.ComponentModel.Design ne contient pas ArrayEditor
- 9. C Le programme argv ne contient pas de guillemets
- 10. NHibernate - OÙ EXISTE (X)
- 11. linq to sql "Contient"
- 12. sql: où sous-requête non null
- 13. SQL: Trouver les lignes où la valeur du champ diffère
- 14. Requête SQL - Où vais-je me tromper?
- 15. requête sql pour la chaîne contient en C#
- 16. champ personnalisé ne pas afficher
- 17. Sous requête de recherche Où X (à partir de ...?
- 18. Dojo (x) Widgets dans le tableau HTML ne pas redimensionner
- 19. pourquoi sql supprimer la requête ne fonctionne pas
- 20. SQL Analysis Services - la requête ne peut pas être traitée
- 21. requête partie d'un champ binaire de la table sql
- 22. SQl La recherche plein texte ne fonctionne pas?
- 23. HQL Equivalent de SQL contient
- 24. SQL - Trouver où dans une requête une certaine ligne sera
- 25. Mac OS X - Le volet Préférences système ne s'ouvre pas
- 26. appfuse: erreur intégrée: java.sql.SQLException: « x » champ ne possède pas de valeur par défaut
- 27. question requête SQL: SELECT ... PAS
- 28. PyQt4 QDialog - le champ ne doit pas être vide
- 29. HTML - le champ de formulaire n'est pas envoyé lorsqu'il contient des caractères spéciaux
- 30. java.awt.Frame.setBackground() ne fonctionne pas sous OS X
Puis-je utiliser C ONTAINS() fonction (sql) pour faire le même contrôle? – Kate