Quiero encontrar una consulta SQL para buscar filas donde field1 no contiene $ x. ¿Cómo puedo hacer esto?
Respuesta
¿Qué tipo de campo es este? El operador IN no se puede utilizar con un solo campo, pero está destinado a ser utilizado en subconsultas o con listas predefinidas:
-- 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 usted está buscando una cadena, a por el operador LIKE (pero esto va a ser lento) :
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';
Si se restringe de tal manera que la cadena que está buscando tiene que empezar con la cadena dada, se puede utilizar índices (si hay un índice en ese campo) y ser razonablemente rápido:
-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';
¿Qué es x.b? tus cartas son muy confusas Recomiendo usar tabla o campo. – Whitecat
Asegúrese de que si usa una subconsulta para 'NOT IN', ninguno de los valores será NULL, ya que [NOT IN y NULL no se combinan de manera obvia] (https://stackoverflow.com/questions/129077/ not-in-clause-and-null-values) si no está familiarizado con la lógica de tres valores. Aquí usarías 'SELECT a FROM x WHERE xb NOT IN (SELECCIONA b FROM y WHERE b IS NOT NULL);' Si también necesitas excluir valores NULL, necesitarías hacer esto: 'SELECT a FROM x WHERE xb NO EN (SELECCIONA b DE DONDE b NO ES NULO) Y xb NO ES NULO; ' –
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(Asegúrese de escapar x $ adecuadamente de antemano para evitar la inyección de SQL)
Editar: NOT IN
hace algo un poco diferente - su pregunta no está totalmente claro lo que elegir cuál usar. LIKE 'xxx%'
puede usar un índice. LIKE '%xxx'
o LIKE '%xxx%'
no.
¿Qué se considera escapar adecuadamente? Sé que con cadenas normales solo tienes que escapar de algunas cosas, pero LIKE tiene algunos personajes especiales adicionales. –
- 1. Devolver filas sql donde el campo contiene SOLAMENTE caracteres no alfanuméricos
- 2. SQL donde campo en vs. donde campo = con varios ors?
- 3. SQL Server, donde el campo es int?
- 4. SQL: ... donde x IN (SELECT Y DE ...)
- 5. CakePHP: Buscar donde el campo no es nulo
- 6. Buscar en SQL donde la cadena comienza con X
- 7. Consulta SQL donde() el año de la fecha es $ año
- 8. 'objeto' no contiene una definición para 'X'
- 9. JIRA JQL: busque problemas donde no existe el campo personalizado
- 10. consulta de linq a sql con múltiples donde los parámetros
- 11. SQL: Encuentre filas donde Column contiene todas las palabras dadas
- 12. .htaccess RewriteCond donde URI no contiene el dominio
- 13. Consulta de RSQLite con la variable especificada por el usuario en el campo DONDE
- 14. Entity Framework: donde el campo comienza con el número
- 15. Pregunta de Django cómo escribir: ¿DONDE el campo LIKE '10__8__0__'?
- 16. consulta T-SQL en la columna sólo contiene números
- 17. PL/SQL opcional donde
- 18. Consulta de SQL Server Server - Contar el campo DateTime distinto
- 19. Q (kdb): anidado donde consulta
- 20. solr búsqueda de documentos donde no existe un campo
- 21. ¿Por qué una consulta sql tiene "donde 1 = 1"
- 22. Django consulta, donde en
- 23. Cómo escribir la consulta MySQL donde A contiene ("a" o "b")
- 24. consulta SQL, lo que está `SELECT * FROM .tables donde id =`
- 25. Suma donde el valor es x
- 26. El campo JDO incrustado no se recupera mediante la consulta
- 27. DONDE x EN (5) vs DONDE x = 5 ... ¿por qué usar IN?
- 28. SQL Conditional Donde
- 29. MySQLdb Python DONDE SQL LIKE
- 30. Django ForeignKey contiene consulta
¿Puedo usar C Función ONTAINS() (sql) para hacer la misma comprobación? – Kate