操作符
|
用途
|
例子
|
+ -
|
表示正数或负数,正数可省去 +
|
-1234.56
|
+
|
将两个数或表达式进行相加
|
A=c+b
|
-
|
将两个数或表达式进行相减
|
34-12
|
*
|
将两个数或表达式进行相乘
|
12*34
|
/
|
除以一个数或表达式
|
18*11
|
NULL
|
空值判断
|
Where name is null;
|
||
|
字符串连接
|
‘101-’||tel_num
|
=
|
等于测试
|
Select * from emp where name=’赵元杰’;
|
!= 或<>或^=
|
不等于测试
|
Select * from emp where name !=’赵元杰’;
|
< |
小于测试
|
Select * from emp where sal < 5000;
|
> |
大于测试
|
Select * from emp where sal > 5000;
|
<=
|
小于等于测试
|
Select * from emp where sal <= 5000;
|
>=
|
大于等于测试
|
Select * from emp where sal >= 5000;
|
Not in
|
测试某值是否在一个指定的结果集中
|
Select name,addr from expert where local not in(‘北京’,’上海’);
|
ANY
|
将一个值与一组值进行比较,返回满足条件的结果。必须跟!=,<,>,<=,>=
|
select ename,sal from emp where sal<= any(select sal from emp where deptno=10)
|
SOME
|
同ANY,必须跟!=,<,>,<=,>=
|
|
ALL
|
将一个值与一组值比较,返回满足条件的所有列值。必须跟!=,<,>,<=,>=
|
Select name,sal from emp w here sal<= all
( 500,800,1200);
|
Not between
A and B
|
判断某个值是否界于两者之间。
|
Select name,sal from emp Where
sal between 500 and 1200;
|
[not]exists
|
判断某个列是否存在于一组值中。
|
select dname,deptno from dept where exists
(select * from emp where dept.deptno=emp.deptno)
|
A[not]like b
|
比较两个模式是否相似,当使用like 语句时Oracle不去访问索引。
|
Select * from emp
Where ename like ‘TH%’;
|
Is [not] null
|
测试值是否为空。
|
Select ename,deptno from emp
Where comm. Is null or comm.=0;
|
Not
|
对结果的否定。
|
Select * from emp Where sal not(sal<1000); 等价于select ename,sal from emp where sal>=1000;
|
AND
|
用于判断两个条件十分都满足。
|
Select * from emp where
Ename=’SIMTH’ and sal>=1000;
|
OR
|
用于判断两个条件中是否有一个满足。
|
Select * from emp where
Ename=’SIMTH’ or ename=’SCOTT’;
|
UNION
|
用于返回(组合)两个查询中所有唯一的行。
|
Select ename from emp union
Select ename from emp;
|
UNION ALL
|
用于返回(组合)两个查询中所有所有的行。
|
|
INTERSECT
|
用于返回两个查询中相同的行。
|
Select ename from emp1 intersect select ename from emp2;
|
MINUS
|
用于返回两个查询中的不同的行。
|
|
Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列:
CURRVAL and NEXTVAL 使用序列号的保留字
LEVEL 查询数据所对应的级
ROWID 记录的唯一标识
ROWNUM 限制查询结果集的数量
Oracle 还提供了一个DUAL 的伪表,该目的表主要是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表里。所以在 from 语句后就没有表名给出。为了使用 from 后有个表名,我们就用DUAL代替。如:
例1:查询Oracle系统日期及时间:
SQL> select to_char( sysdate,'yyyy.mm.dd hh24:mi:ss') from DUAL;
TO_CHAR(SYSDATE,'YY
-------------------
2001.06.02 07:28:09
例2:计算一下 5000+5000*0.1 的结果是多少,则:
SQL> select 5000+5000*0.1 from DUAL;
5000+5000*0.1
-------------------
5500
函 数
|
说 明
|
ASCII
|
返回对应字符的十进制值
|
CHR
|
给出十进制返回字符
|
CONCAT
|
拼接两个字符串,与 || 相同
|
INITCAT
|
将字符串的第一个字母变为大写
|
INSTR
|
找出某个字符串的位置
|
INSTRB
|
找出某个字符串的位置和字节数
|
LENGTH
|
以字符给出字符串的长度
|
LENGTHB
|
以字节给出字符串的长度
|
LOWER
|
将字符串转换成小写
|
LPAD
|
使用指定的字符在字符的左边填充
|
LTRIM
|
在左边裁剪掉指定的字符
|
RPAD
|
使用指定的字符在字符的右边填充
|
RTRIM
|
在右边裁剪掉指定的字符
|
REPLACE
|
执行字符串搜索和替换
|
SUBSTR
|
取字符串的子串
|
SUBSTRB
|
取字符串的子串(以字节)
|
SOUNDEX
|
返回一个同音字符串
|
TRANSLATE
|
执行字符串搜索和替换
|
TRIM
|
裁剪掉前面或后面的字符串
|
UPPER
|
将字符串变为大写
|
NVL
|
以一个值来替换空值
|
LPAD(string,Length[,'set'])
TRIM可以使你对给定的字符串进行裁剪(前面,后面或前后)。
如果指定 LEADING, Oracle 从trim_char 中裁剪掉前面的字符;
如果指定TRAILING, Oracle 从trim_char 中裁剪掉尾面的字符;
如果指定两个都指定或一个都没有给出,Oracle从trim_char 中裁剪掉前面及尾面的字符;
如果不指定 trim_character, 缺省为空格符;
如果只指定trim_source, Oracle Oracle从trim_char 中裁剪掉前面及尾面的字符。
例子:将下面字符串中的前面和后面的‘0‘字符都去掉:
SELECT TRIM (0 FROM 0009872348900) "TRIM Example" FROM DUAL;
TRIM example
--------------------------------
函数
|
说明
|
Value1 + value2
|
加
|
Value1 - value2
|
减
|
Value1 * value2
|
乘
|
Value1 / value2
|
除
|
ABS(value)
|
绝对值
|
CEIL(value)
|
大于或等于value的最小整数
|
COS(value)
|
余弦
|
COSH(value)
|
反余弦
|
EXP(value)
|
e的value次幂
|
FLOOR(value)
|
小于或等于value的最大整数
|
LN(value)
|
value的自然对数
|
LOG(value)
|
value的以10为底的对数
|
MOD(value,divisor)
|
求模
|
NVL(value,substitute)
|
value为空时以substitute代替
|
POWER(value,exponent)
|
value的exponent次幂
|
ROUND(value,precision)
|
按precision 精度4舍5入
|
SIGN(value)
|
value为正返回1;为负返回-1;为0返回 0.
|
SIN(value)
|
余弦
|
SINH(value)
|
反余弦
|
SQRT(value)
|
value 的平方根
|
TAN(value)
|
正切
|
TANH(value)
|
反正切
|
TRUNC(value,按precision)
|
按照precision 截取value
|
VSIZE(value)
|
返回value在ORACLE的存储空间大小
|
函 数
|
描 述
|
ADD_MONTH
|
在日期date上增加count个月
|
GREATEST(date1,date2,. . .)
|
从日期列表中选出最晚的日期
|
LAST_DAY( date )
|
返回日期date 所在月的最后一天
|
LEAST( date1, date2, . . .)
|
从日期列表中选出最早的日期
|
MONTHS_BETWEEN(date2,date1)
|
给出 Date2 - date1 的月数(可以是小数)
|
NEXT_DAY( date,’day’)
|
给出日期date之后下一天的日期,这里的day为星期,如: MONDAY,Tuesday等。
|
NEW_TIME(date,’this’,’other’)
|
给出在this 时区=Other时区的日期和时间
|
ROUND(date,’format’)
|
未指定format时,如果日期中的时间在中午之前,则将日期中的时间截断为12 A.M.(午夜,一天的开始),否则进到第二天。时间截断为12 A.M.(午夜,一天的开始),否则进到第二天。
|
TRUNC(date,’format’)
|
未指定format时,将日期截为12 A.M.( 午夜,一天的开始).
|
时区缩写
|
代表的时区
|
AST/ADT
|
大西洋标准/日期时间
|
BST/BDT
|
白令海标准/日期时间
|
CST/CDT
|
中部标准/日期时间
|
GMT
|
格林威治时间
|
HST/HDT
|
阿拉斯加-夏威夷标准/日期时间
|
MST/MDT
|
山区标准/日期时间
|
NST
|
新大陆标准时间
|
PST/PDT
|
太平洋标准/日期时间
|
YST/YDT
|
Yukon标准/日期时间
|
函 数
|
描 述
|
CHARTOROWID
|
将 字符转换到 rowid类型
|
CONVERT
|
转换一个字符节到另外一个字符节
|
HEXTORAW
|
转换十六进制到raw 类型
|
RAWTOHEX
|
转换raw 到十六进制
|
ROWIDTOCHAR
|
转换 ROWID到字符
|
TO_CHAR
|
转换日期格式到字符串
|
TO_DATE
|
按照指定的格式将字符串转换到日期型
|
TO_MULTIBYTE
|
把单字节字符转换到多字节
|
TO_NUMBER
|
将数字字串转换到数字
|
TO_SINGLE_BYTE
|
转换多字节到单字节
|
日期代码
|
格式说明
|
例子
|
AD 或 BC
|
AD=Anno Domini公元,BC=Before Christ公元前。不带点的公元或公元前
|
‘YYYY AD’=1999 AD
|
A.D. 或B.C.
|
带点的公元或公元前
|
‘YYYY A.D.’=1999 A.D.
|
AM或PM
|
AM= ante meridiem 上午,PM=post meridiem下午。不带点的上午或下午
|
‘HH12AM’=09AM
|
A.M.或P.M.
|
带点的上午或下午
|
‘HH12A.M.’=09A.M.
|
DY
|
星期几的缩写
|
Mon,Tue,...
|
DAY
|
星期几的全拼
|
Monday,Tuesday,...
|
D
|
一周的星期几,星期天=1,星期六=7
|
1,2,3,4,5,6,7
|
DD
|
一月的第几天,1à31
|
1,2,... 31
|
DDD
|
一年的第几天,1à366
|
1,2,3,...366
|
J
|
公元前的第几天(从公元前4712起 ?)
|
2451514,2451515,...
|
W
|
一个月的第几周,1à 5
|
1,2,3,4,5
|
WW,IW
|
一年的第几周,一年的ISO的第几周
|
1,2,3,4,... 52
|
MM
|
两为数的月
|
01,02,03,...12
|
MON
|
月份的缩写
|
Jan,Feb,Mar ,...Dec
|
MONTH
|
月份的全拼
|
January,February,...
|
RM
|
罗马数字的月份,I à XII
|
I,II,III,IV,...XII
|
YYYY,YYY,YY,Y
|
四位数的年,三位数的年
|
1999,999,99,9
|
YEAR
|
年的全拼
|
Nineteen Ninety-nine
|
SYYYY
|
如果是公元前(BC),年份前负号
|
-1250
|
RR
|
当前年份的后两位数字
|
01代表2001年
|
HH,HH12
|
12小时制,1à12
|
1,2,3,...12
|
HH24
|
24小时制,0à23
|
0,1,2,3,...23
|
MI
|
一小时中的第几分,0à59
|
0,1,2,3...59
|
SS
|
一分中的第几秒,0à59
|
0,1,2,3,...59
|
SSSSS
|
一天中的第几秒,0à86399
|
0,1,2,3,...86399
|
../-;:
|
标点符号表示法
|
文字显示
|
‘text’
|
引号表示法
|
文字显示
|
INSERT INTO file_tbl VALUES (BFILENAME (’lob_dir1’, ’image1.gif’));