摘要: 1.定义 在oracle数据库中,NULL表示未知值,既不是空值也不是0,当插入数据时,如果没有为特定列提供值,并且该列没有原先设定的默认值,那么其结果为NULL.尤其要注意的是在算术表达 式中如果出现NULL,那么其结果就是NULL,这会在很多时候造成应用程序输出不符合预想结果.2.处理办法(1)使用NVL(exp1,exp2)函数 该函数等价于if exp1 is NULL then result = exp2 else result = exp1(2)使用nvl2(exp1,exp2,exp3) 该函数等价于if exp1 is NULL then result = exp3 else 阅读全文
posted @ 2012-10-22 10:49 原想 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 今日学习遇到一个不熟悉的函数LPAD,查了一下文档,将其用法总结如下:Lpad Function:在PL/SQL中用于往源字符串的左侧填充一些字符。函数参数:lpad( string1, padded_length, [ pad_string ] )其中string1:源字符串padded_length:最终返回的字符串的长度,如果最终返回的字符串的长度比源字符串的小,那么此函数实际上对源串进行截断处理pad_string:用于填充的字符,可以不填,默认为空字符下面是几个实例:1 --返回值长度大于源字符串长度,将进行填充2 select lpad('zhanglt',10,& 阅读全文
posted @ 2012-10-22 10:47 原想 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 今天在学习《oracleSQL高级编程》,看到了比较全的分析函数列表,故记于此。编号函数功能1LAG访问分区或者数据集中之前的一行2LEAD访问分区或者数据集中之后的一行3First_Value访问分区或者数据集中第一行4Last_Value访问分区或者数据集中最后一行5Nth_Value访问分区或者结果集中任意一行6Rank将数据行值按照排序后的的顺序进行排序,有并列的情况的排名值将跳过7Dense_Rank将数据行值按照排序后的顺序进行排序,有并列值的情况排名值不会跳过8row_number()对行排序并为每一行分配一个唯一的编号,这是一个非确定的函数 阅读全文
posted @ 2012-10-22 10:46 原想 阅读(219) 评论(0) 推荐(0) 编辑
摘要: CONNECT BY可用于生成序列,下面的函数就是利用CONNECT BY的这一特性实现的二进制到十进制的转行函数。 1 create or replace function bintodec(bstr in varchar2) return varchar2 is 2 -- ******************************************************** 3 --* 文件名:BinToDec.sql 4 -- * 版本:1.0 5 -- * 用途:利用connect by实现二进制向十进制的转换 6 -- * 参数: 7 -- * bS... 阅读全文
posted @ 2012-10-22 10:45 原想 阅读(170) 评论(0) 推荐(0) 编辑
摘要: Where子句和Group By子句的区别主要如下:1、Where子句用于返回的单行进行限制2. Group by子句用于对返回的行组进行限制如果Group by 子句中不是对行组进行限制,而是进行单行限制那么应该尽量转换为WHERE子句的条件,这也是SQL优化的内容之一。下面是一个例子:1 select t.product_type_id, avg(t.price)2 from products t3 where t.price < 154 group by t.product_type_id5 having avg(t.price) > 136 order by t.produ 阅读全文
posted @ 2012-10-22 10:44 原想 阅读(448) 评论(0) 推荐(0) 编辑