VARCHAR2(N CHAR)与VARCHAR2(N)的区别[Oracle基础]
在数据库开发或者设计时,经常需要考虑存储空间的问题,当然很多时候我们并不需要去考虑一些细小的差别,但是当存储资源较为紧张的时候,我们还是有必要了解的。这里采用一个例子来区分VARCHAR2(N CHAR)与VARCHAR2(N)的区别。SQL> create table tangyun (c1 varchar2(1), c2 varchar2(1 char));SQL> insert into tangyun ...
wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
无论是在做Oracle数据库开发还是在运维的过程中,我们经常都会使用到行列转换操作,Oracle为行列转换提供了一些内置函数,下面我们对比一下使用这些函数如何实现行列转换。1、创建测试需要使用的表SQL> CREATE TABLE tangyun(PID NUMBER NOT NULL PRIMARY KEY,cName VARCHAR2(20));表已创建。SQL> CREATE TABLE...
oracle 分析函数之(rank()/dense_rank()/row_number())
在实际的数据库开发过程中,经常需要用到不同需求的排序,有时候需要区别并列的排名,有时候需要区分并列排名之后的排名,Oracle为排序提供rank()、dense_rank()、row_number()函数,为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。1、Rank()...
记录Record、PL/SQL表和二维数组
一、什么是记录Record和PL/SQL表?记录Record:由单行多列的标量类型构成的临时记录对象类型。类似于多维数组。PL/SQL表:由多行单列的索引列和可用列构成的临时索引表对象类型。类似于一维数组和键值对。两者都属于用户自定义数据类型。二、Record + PL/SQL表 用途是什么?Record + PL/SQL表可以进行数据的多行多列存储。这样我们就可使用Record + PL/SQL表在需要时封装一个临时的表对象,进行传递和操作。通过Record自定义表结构,封装一条记录。PL/SQL表声明 可用列 类型为Record类型(将可用列指向Record类型变量),每个索引对应一个Re
Oracle 内置函数三
Ø REGEXP_REPLACE该函数是Oracle10g新增的函数,扩展REPLACE功能,该函数用于按照特定表达式的规则进行替换字符串,即:支持正则表达式。格式:REGEXP_REPLACE(SOURCE_STRING,PATTEN[,REPLACE_STRING[,POSITION[,OCCURRENCE[,MATCH_PARAMETER]]]])SQL> SELECT REGEXP_REPLACE('TANG2010YUN||-||tang2012yun','[a-z]','') FROM DUAL;REGEXP_REPLACE('TANG2010YUN||-------------------------------TANG2010YUN||-||2012SQL> SELECT REGEXP_REPLACE('TANG2010YUN||-||tang2012yun','d','') FROM DUAL;REGEXP_REPLACE('TANG201
Oracle 内置函数二
Ø LAST_DAY函数LAST_DAY返回实参数指定日期对应月份的最后一天。SQL> SELECT LAST_DAY(SYSDATE),LAST_DAY(SYSDATE-10) FROM DUAL;LAST_DAY(SYSDATE) LAST_DAY(SYSDATE-10)----------------- --------------------2010-10-31 19:59: 2010-10-31 19:59:58Ø LEASTLEAST函数返回一数值列表中的最高数值。可使用LEAST函数处理数字数据和字符数据。这里需要注意的是以第一个参数来判断参数是字符型还是数值型。SQL>SELECT LEAST('12',102,-12,0,'-15'),LEAST(12,'102',-12,0,'-15') FROM DUAL;SQL> SELECT LEAST('12',
Oracle 内置函数一
Ø ABSABS函数返回一数值的绝对值。Ø ACOSACOS函数返回一数值的反余弦值。结果以弧度表示,且在0到PI之间。 其语法格式如下: ACOS(number) 其中,number必须是-1与1之间的值,如果超出则报异常 下面的例子显示了1和-1 的反余弦值: ACOS(1)=0 ACOS(-1)=3.1415927(PI)Ø ADD_MONTHS如果,结果月份的天数比开始月份的天数少,那么,也会向回调整以适应有效日期。SQL> SELECT SYSDATE,ADD_MONTHS(SYSDATE,2),ADD_MONTHS(SYSDATE,4) FROM DUAL;SYSDATE ADD_MO