题目:查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列
题意:每个title下,emp_no重复的员工忽略不计

方法1:使用%
SELECT *
FROM employees
WHERE emp_no % 2 = 1
AND last_name<>'Mary'
ORDER BY hire_date DESC;
补充:emp_no % 2=1也可以改成MOD(emp_no, 2)=1,但是某些sql版本可能不支持后者(比如题库就不支持)
补充:不相等有三种表示方式:<>、!=、IS NOT
注意:last_name是varchar类型,所以对它的判断需要加上单引号

方法2:使用&
SELECT *
FROM employees
WHERE emp_no & 1
AND last_name<>'Mary'
ORDER BY hire_date DESC;
补充:sql中/表示标准除法,如101/2得到50.5,而DIV表示整数除法,如101 DIV 2得到50

补充:奇偶数查询:参考资料:https://blog.csdn.net/ccStroy/article/details/78061861
查询奇数的一般方法:如上(最好是位运算&)
查询偶数的一般方法:emp_no=(emp_no>>1<<1)
但是,以上的一般方法,针对的是字段全是数字的情况,如果对于身份证这种中间隐藏了一部分的,积极无法使用
所以更好的方法是使用正则化表达式(当然题库这里无法使用正则化表达式,可能是版本或设置问题)
查询奇数的正则化方法:emp_no REGEXP ‘[13579]’
注意:表示以13579中的任意一个结尾
补充:顺便说一下正则化表达式:
^aa:以aa开头
aa$:以aa结尾
.:匹配任何字符
[abc]:[字符集合],包含中括号内的字符
[^abc]或[!abc]:[字符集合],不包含中括号内的字符
a|b|c:匹配a或b或c,如(中|美)国
:匹配前面的子表达式0次或者多次。如,zo能匹配’z’以及’zoo’。*等价于{0,}
+:匹配前面的子表达式1次或者多次。如,’zo+’能匹配’zo’,但不能匹配’z’。+等价于{1,}
{n}:n是一个非负整数,匹配前面的子表达式2次。如,o{2} 能匹配’food’中的两个o,但不能匹配’Bob’中的o
{n, m}:m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。