Пожалуйста, помогите мне написать sql-запрос с условиями как "НЕ НРАВИТСЯ"
Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%')
Получение ошибки.
Пожалуйста, помогите мне написать sql-запрос с условиями как "НЕ НРАВИТСЯ"
Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%')
Получение ошибки.
Вы не можете объединиться как и в. Указание ниже выполнило бы работу:
Select * from Table1
where EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'
Это потому, что вы смешиваете два синтаксиса вместе.
Если у вас всегда есть эти три значения, вы можете просто И результаты трех выражений LIKE.
SELECT
*
FROM
Table1
WHERE
EmpPU NOT LIKE '%CSE%'
AND EmpPU NOT LIKE '%ECE%'
AND EmpPU NOT LIKE '%EEE%'
Если вам нужно сделать это для "любого числа" значений, вы можете поместить значения в таблицу и выполнить объединение.
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
OR...
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)
Если у вас есть набор слов, которые вы хотите включить/исключить в поиске из определенного столбца. Вы можете использовать функцию регулярного выражения mysql.
Исключить набор слов из столбца:
SELECT
*
FROM
Table1
WHERE
EmpPU NOT REGEXP 'CSE|ECE|EEE';
Поиск набора слов из столбца:
SELECT
*
FROM
Table1
WHERE
EmpPU REGEXP 'CSE|ECE|EEE';
вы не можете комбинировать LIKE и IN
вы можете сделать:
select * from Table1
where EmpPU not in ('%CSE%', '%ECE%', '%EEE%')
но вы не выиграете от шаблона%
если вам нужен только%:
Select * from Table1
where EmpPU not like '%CSE%' and EmpPU not like '%ECE%' and EmpPU not like '%EEE%'
Или вы можете сделать это следующим образом:
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
)
вы можете попробовать это
Select * from Table1 where
EmpPU NOT Like '%CSE%'
AND EmpPU NOT Like '%ECE%'
AND EmpPU NOT Like '%EEE%'