[英]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.