IN中可以使用LIKE嗎?以下查詢產生一個錯誤。IN與LIKE SQL中的條件
Select *
from employees
where salary between 2500 and 10000
and job_id NOT in (like '%MAN%', like '%CLERK%');
什麼是正確的語法?我使用Oracle 11g
IN中可以使用LIKE嗎?以下查詢產生一個錯誤。IN與LIKE SQL中的條件
Select *
from employees
where salary between 2500 and 10000
and job_id NOT in (like '%MAN%', like '%CLERK%');
什麼是正確的語法?我使用Oracle 11g
你不能做到既「喜歡」和「IN」的時候,但你可以做到這一點
Select *
from employees
where salary between 2500
and 10000
and job_id NOT like '%MAN%'
and job_id NOT like '%CLERK%';
這是我在提到的查詢出錯後所做的。謝謝 –
不幸的是,沒有「像」操作符。你可以把它分解爲一系列的LIKE
條件像@Elfentech建議,或者你可以用REGEXP_LIKE
功能效仿:
SELECT *
FROM employees
WHERE salary BETWEEN 2500 AND 10000
AND NOT REGEXP_LIKE (job_id, '.*[MAN|CLERK].*')
或者,您也可以在一堆UNION ALL
查詢的連接從dual
:
SELECT *
FROM employees
JOIN (SELECT 'MAN' AS search FROM dual
UNION ALL
SELECT 'CLERK' FROM dual) jobs
ON employee.jod_id LIKE CONCAT ('%', jobs.search, '%')
WHERE salary BETWEEN 2500 AND 10000
感謝您的REGEXP_LIKE –
這*在like * thingy是我想要這麼多次的功能。 Oracle沒有這樣的事情。 –
@RenéNyffenegger:我不認爲任何數據庫都有類似的東西。 –
@a_horse_with_no_name:Teradata支持** LIKE ALL | ANY('%MAN%','%CLERK%')**。 ALL - > ANDed LIKEs,ANY - > ORed LIKEs,甚至可以使用SELECT來獲取搜索字符串 – dnoeth