1 Oracle中的替换函数
REPLACE 函数
REPLACE (expr,from_string,to_string)
将字符串expr中的所有from¬_string 替换为to_string 以字符串为单位,将整个字符替换。
TRANSLATE(expr,from_string,to_string)
以字符为单位, 按顺序将expr中的from-string替换为对应的to_string,一一替换,有的为空。如果to_tring为空,则返回null。
SELECT TRANSLATE('abcdefghij','abcefghi','123') FROM dual;
123dj
SELECT REPLACE ('abcdefghij','abdefghi','123') FROM dual;
abcdefghij
2 返回一行值中的最大与最小值
greatest :
greatest (value1, value2, value3, …)
返 回最大值,以第一个参数类型为标准,并不能进行隐式转换。 如果有null,返回null。
LEAST
LEAST(value1, value2, value3, …)
返回value列表最小的值,以第一个参数类型为标准,并不能进行隐式转换。 如果有null,返回null。
3 对null值进行转换:
coalesce 与nvl
区别就是coalesce 可以有多个参数,返回第一个不为null的值。
4 排序后对null值的处理:
使用nulls first 和nulls last
select * from A t order by t.a nulls first
5 in 对null的处理。
首先
select 1 from dual where 1!=null select 1 from dual where 1=null
这两句都不会有返回结果。
select 1 from table1 where t.a in( 'a') 和 select 1 from table1 where t.a not in( 'a')
这两句返回的结果加起来,并非是全集。这两句sql 都不会把有null的行取出来。
select 1 from table1 where t.a in( 'a') 的补集是这样的
select 1 from table1 where lnnvl( t.a in( 'a'))
lnnvl 函数会把null的行取出来。