Quiero encontrar a una consulta SQL para buscar las filas donde campo1 no contiene $x. ¿Cómo puedo hacer esto?

  • Puedo utilizar la función CONTAINS () (sql) para hacer la misma comprobación?
InformationsquelleAutor zuk1 | 2008-10-24

2 Comentarios

  1. 251

    ¿Qué tipo de campo es esto? El operador no se puede usar con un solo campo, pero está destinado a ser utilizado en las subconsultas o con predefinidas listas:

    -- 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á en busca de una cadena, ir a por el operador LIKE (pero esto será lenta):

    -- Finds all rows where a does not contain "text"
    SELECT * FROM x WHERE x.a NOT LIKE '%text%';

    Si restringe de manera que la cadena que está buscando tiene que empezar con la cadena dada, se pueden usar índices (si es que 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? sus letras son muy, muy confuso. Recomiendo el uso de la tabla o en el campo.
    • Asegúrese de que si usted utiliza una subconsulta para NOT IN que ninguno de los valores será NULO, como NO NULL no se combinan de manera obvia si usted no está familiarizado con los tres valores de la lógica. Aquí usted usaría SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL); Si usted también necesita excluir valores NULOS, usted tendría que hacer esto: SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;
  2. 15

    SELECT * FROM table WHERE field1 NOT LIKE '%$x%'; (Asegúrese de escape $x adecuadamente de antemano para evitar la inyección SQL)

    Edición: NOT IN hace algo un poco diferente – su pregunta no está totalmente claro por lo que elegir cual usar. LIKE 'xxx%' puede utilizar un índice. LIKE '%xxx' o LIKE '%xxx%' no puede.

    • Lo que se considera escapar correctamente? Sé que con el normal de las cadenas de usted sólo tiene que escapar de un par de cosas, pero COMO tiene algunos extras caracteres especiales.

Dejar respuesta

Please enter your comment!
Please enter your name here