que - Consulta SQL donde el campo NO contiene $ x
instrucción bulk insert (2)
Quiero encontrar una consulta SQL para encontrar filas donde field1 no contiene $ x. ¿Cómo puedo hacer esto?
¿Qué tipo de campo es este? El operador IN no se puede usar con un solo campo, pero se debe usar 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 está buscando una cadena, busque el operador LIKE (pero esto será lento):
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE ''%text%'';
Si lo restringe para que la cadena que está buscando tenga que comenzar con la cadena dada, puede usar í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%'';
SELECT * FROM table WHERE field1 NOT LIKE ''%$x%'';
(Asegúrese de evitar $ x correctamente de antemano para evitar la inyección de SQL)
Edit: NOT IN
hace algo un poco diferente; tu pregunta no está del todo clara, así que elige cuál usar. LIKE ''xxx%''
puede usar un índice. LIKE ''%xxx''
o LIKE ''%xxx%''
no puede.