S'il vous plaît aidez-moi à écrire une requête SQL avec les conditions comme "PAS LIKE IN"
Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%')
Obtenir une erreur.
Vous ne pouvez pas combiner comme dans et dans. La déclaration ci-dessous ferait l'affaire cependant:
Select * from Table1
where EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'
C'est parce que vous mélangez deux syntaxes.
Si vous avez toujours exactement ces trois valeurs, vous pouvez simplement ET les résultats de trois expressions LIKE.
SELECT
*
FROM
Table1
WHERE
EmpPU NOT LIKE '%CSE%'
AND EmpPU NOT LIKE '%ECE%'
AND EmpPU NOT LIKE '%EEE%'
Si vous avez besoin de le faire pour "n'importe quel nombre" de valeurs, vous pouvez les mettre dans une table et faire une jointure.
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
OU...
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)
Si vous avez un ensemble de mots que vous souhaitez inclure/exclure dans la recherche d'une colonne particulière. Vous voudrez peut-être utiliser la fonction d'expression régulière de mysql.
exclure un ensemble de mots d'une colonne:
SELECT
*
FROM
Table1
WHERE
EmpPU NOT REGEXP 'CSE|ECE|EEE';
recherche ensemble de mots d'une colonne:
SELECT
*
FROM
Table1
WHERE
EmpPU REGEXP 'CSE|ECE|EEE';
vous ne pouvez pas combiner LIKE et IN
tu peux faire:
select * from Table1
where EmpPU not in ('%CSE%', '%ECE%', '%EEE%')
mais vous ne bénéficierez pas du caractère générique%
si vous avez besoin du%, la seule option est:
Select * from Table1
where EmpPU not like '%CSE%' and EmpPU not like '%ECE%' and EmpPU not like '%EEE%'
Ou vous pouvez le faire comme ceci:
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
)
tu peux essayer ça
Select * from Table1 where
EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'
Le code est comme ci-dessous:
Select * from Table1 where
(EmpPU NOT Like '%CSE%'
OR EmpPU NOT Like '%ECE%'
OR EmpPU NOT Like '%EEE%')