[英]SQL - How to avoid multiple OR operators in WHERE clause?
sqlite> .schema movie
CREATE TABLE movie (
id INTEGER PRIMARY KEY, title TEXT, year INTEGER, nth TEXT, for_video BOOLEAN
);
sqlite>
sqlite>
sqlite>
對於這個問題:
哪些電影(不包括標題以標點符號開頭的電影)按字母順序排在第一位,哪些排在最后?
下面的語法:
SELECT title
FROM movie
WHERE NOT(title LIKE '%!%' or title LIKE '%#%' or title LIKE '%$%')
ORDER BY title ASC LIMIT 1;
有永無止境的或運營商。
語法應適用於 mysql 和 sqlite
如何避免檢查標點符號的多個OR
運算符? 尚未添加更多OR
運算符用於標點檢查...
對於第一部分(多個 OR)。 另請注意,連接的語法不同( Like
)
您可以為標點符號創建一個表格並將數據添加到其中
Create table Punctuations (punckSign varchar(10))
insert into Punctuations
values ('!'), ('#'), ('$')
然后將其與電影表左連接,如下所示
MySQL
SELECT title FROM movie m
Left join Punctuations p
on title like concat('%',p.punckSign,'%')
where p.punckSign is null
SQLite
SELECT title FROM movie m
Left join Punctuations p
on title like '%'|| p.punckSign || '%'
where p.punckSign is null
使用 REGEXP 嘗試以下操作
SELECT title
FROM movie
WHERE title not REGEXP '!|#|$'
ORDER BY title ASC LIMIT 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.