por favor me ayude a escribir una consulta SQL con las condiciones que 'no como en'de consultas SQL con no como en
Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%')
error al obtener.
por favor me ayude a escribir una consulta SQL con las condiciones que 'no como en'de consultas SQL con no como en
Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%')
error al obtener.
No se pueden combinar como y por debajo de la declaración sería hacer el trabajo sin embargo:.
Select * from Table1
where EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'
puede probar esta
Select * from Table1 where
EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'
Eso es porque estás mezclando dos sintaxis juntos.
Si siempre tiene exactamente esos tres valores, puede simplemente Y los resultados de tres expresiones LIKE.
SELECT
*
FROM
Table1
WHERE
EmpPU NOT LIKE '%CSE%'
AND EmpPU NOT LIKE '%ECE%'
AND EmpPU NOT LIKE '%EEE%'
Si tiene que hacerlo por "cualquier número" de los valores, puede poner los valores en una tabla y hacer un unirse.
WITH
myData
AS
(
SELECT '%CSE%' AS match
UNION ALL SELECT '%ECE%' AS match
UNION ALL SELECT '%EEE%' AS match
)
SELECT
*
FROM
Table1
LEFT JOIN
myData
ON Table1.EmpPU LIKE myData.match
WHERE
myData.match IS NULL
O ...
WITH
myData
AS
(
SELECT '%CSE%' AS match
UNION ALL SELECT '%ECE%' AS match
UNION ALL SELECT '%EEE%' AS match
)
SELECT
*
FROM
Table1
WHERE
NOT EXISTS (SELECT * FROM myData WHERE Table1.EmpPU LIKE match)
O puede hacerlo de esta manera:
SELECT
*
FROM
Table1
WHERE NOT EXISTS
(
SELECT
NULL
FROM
(
SELECT '%CSE%' AS column1 UNION ALL
SELECT '%ECE%' UNION ALL
SELECT '%EEE%'
) AS tbl
WHERE Table1.EmpPU LIKE tbl.column1
)
usted no puede combinar COMO EN y
que puede hacer:
select * from Table1
where EmpPU not in ('%CSE%', '%ECE%', '%EEE%')
, pero usted no se benefician del comodín%
si necesita el% la única opción es:
Select * from Table1
where EmpPU not like '%CSE%' and EmpPU not like '%ECE%' and EmpPU not like '%EEE%'
¿Salvo que quiere decir 'AND' en lugar de' OR'? ¿Y necesita especificar el nombre del campo allí también? * [La última parte de esta respuesta es un carácter para el personaje idéntico a una respuesta eliminada ...] * – MatBailie
no, es OR. Solo una de las condiciones debe ser verdadera para excluir el registro. Debe excluirse una fila con "EEE" en ella, pero no es como CSE – Diego
Ese es exactamente el punto. Una fila está *** incluida *** si la cláusula WHERE se evalúa como verdadera, para tomar '' SMEEEG'' como ejemplo y probar su código ...'('SMEEEG' NO ME GUSTA '% CSE%') O ('SMEEEG' NO ME GUSTA '% ECE%') O ('SMEEEG' NO ME GUSTA '% EEE%')' => '(TRUE) O (TRUE) O (FALSO) '=>' VERDADERO'. Su código incluye ''SMEEEG'' a pesar de que *** es *** como''% EEE% ''. Necesitas 'NOT ((x LIKE a) OR (x LIKE b) O (x LIKE c))' o necesitas '(x NO ME GUSTA a) AND (x NO ME GUSTA b) AND (x NO ME GUSTA c)'. De cualquier manera, lo que tienes no funciona. Lo siento. – MatBailie
Si ha establecido de las palabras que desea incluir/excluir en busca de una columna en particular . Es posible que desee utilizar la función de expresión regular de mysql.
Excluir conjunto de palabras de una columna:
SELECT
*
FROM
Table1
WHERE
EmpPU NOT REGEXP 'CSE|ECE|EEE';
Buscar conjunto de palabras de una columna:
SELECT
*
FROM
Table1
WHERE
EmpPU REGEXP 'CSE|ECE|EEE';
Esta es una mejor respuesta ya que es más como 'NO ME GUSTA EN (...) ', lo que facilita el mantenimiento de la consulta. En cuanto a rendimiento, la expresión regular podría ser más difícil. – Jabberwockey
El OP pregunta por T-SQL. –
Este es realmente un buen compañero de solución. – aavrug
posible duplicado de [¿Es posible usar, como e IN para ¿una declaración WHERE?] (http://stackoverflow.com/questions/4335359/is-it-possible-to-use-like-and-in-for-a-where-statment) – onedaywhen