NULL的操作:
NULL 不可用 = 判定,只可通过 IS NULL 去判定。
NULL 不支持 加、减、乘、除、大小比较,相等比较。
将NULL转换为其他值:
coalesce 与 nvl :
coalesce 依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。
nvl(A,B) 若A为NULL 则返回B,否则返回A,二者都为NULL返回NULL。
查找满足多个条件的行:
对于多个条件的组合,需要使用括号,就不必考虑优先级的问题。
where子句中引用使用别名的列:
错误方式:
SELECT SAL AS 工资 ,COMN AS 提成 FROM DUAL where 工资 > 1000
别名不可作为where子句条件直接使用。
正确方式:
SELECT * FROM
(SELECT SAL AS 工资 ,COMN AS 提成 FROM DUAL)
where 工资 > 1000
列拼接:
|| 进行拼接
SELECT语句中使用逻辑语句 (CASE WHEN):
SELECT sal
CASE
WHEN sal >= 1000 过高
WHEN sal <= 900 过低
ELSE 'OK'
END AS STATUS
FROM DUAL
结果:
sal | STATUS |
---|---|
2000 | 过高 |
800 | 过低 |
950 | ok |
使用ROWNUM限制返回的行数:
取两条数据
SELECT * FROM DUAL WHERE ROWNUM <= 2
取第二条数据
错误方式 :SELECT * FROM DUAL WHERE ROWNUM = 2
ROWNUM 是依次对数据进行标记,需要先把数据取出来,才能确定具体行数。所有需要先如下生成序号
SELECT * FROM
(SELECT rownum as rn FROM DUAL)
WHERE rn = 2
使用ROWNUM随机返回数据:
SELECT *
(SELECT ROWNUM FROM DUAL ORDER BY dbms_random.value())
WHERE ROWNUM <= 3
为什么要嵌套查询:
语句执行顺序为 SELECT 、ROWNUM、ORDER BY
正确写法 先随机排序 再取数据
错误写法 先取数据 再随机排序
LIKE查询:
%:替代一个或多个字符
_:替代一个字符
如果需要将%或 _ 当作字符串进行搜索,需要使用转义符合
SELECT * FROM DUAL WHERE A LIKE '\_' ESCAPE '\'
ESCAPE ‘’ 将\表示为转义字符,将 _ 转义为字符。