Consulta SQL Donde EL Campo NO Contiene $x
Quiero encontrar una consulta SQL para encontrar filas donde field1 no contiene $x. ¿Cómo puedo hacer esto?
2 answers
¿Qué tipo de campo es este? El operador IN no se puede usar con un solo campo, pero está destinado a usarse 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, vaya por 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 restringes para que la cadena que estás 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%';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-24 11:39:26
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(Asegúrese de escapar properly x correctamente de antemano para evitar la inyección SQL)
Editar: NOT IN
hace algo un poco diferente - tu pregunta no está totalmente clara, así que elige cuál usar. LIKE 'xxx%'
puede usar un índice. LIKE '%xxx'
o LIKE '%xxx%'
no puede.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-24 09:45:40