datasky
博客园
首页
新文章
联系
订阅
管理
posts - 58, comments - 117, trackbacks - 29
Oracle SQL 內置函数大全
1
SQL中的单记录函数
2
1
.
ASCII
3
返回与指定的字符对应的十进制数;
4
SQL
>
select
ascii
(
'
A
'
) A,
ascii
(
'
a
'
) a,
ascii
(
'
0
'
) zero,
ascii
(
'
'
)
space
from
dual;
5
6
A A ZERO
SPACE
7
--
------- --------- --------- ---------
8
65
97
48
32
9
10
11
2
.CHR
12
给出整数,返回对应的字符;
13
SQL
>
select
chr(
54740
) zhao,chr(
65
) chr65
from
dual;
14
15
ZH C
16
--
-
17
赵 A
18
19
3
.CONCAT
20
连接两个字符串;
21
SQL
>
select
concat(
'
010-
'
,
'
88888888
'
)
||
'
转23
'
高乾竞电话
from
dual;
22
23
高乾竞电话
24
--
--------------
25
010
-
88888888转23
26
27
4
.INITCAP
28
返回字符串并将字符串的第一个字母变为大写;
29
SQL
>
select
initcap(
'
smith
'
) upp
from
dual;
30
31
UPP
32
--
---
33
Smith
34
35
36
5
.INSTR(C1,C2,I,J)
37
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
38
C1 被搜索的字符串
39
C2 希望搜索的字符串
40
I 搜索的开始位置,默认为1
41
J 出现的位置,默认为1
42
SQL
>
select
instr(
'
oracle traning
'
,
'
ra
'
,
1
,
2
) instring
from
dual;
43
44
INSTRING
45
--
-------
46
9
47
48
49
6
.LENGTH
50
返回字符串的长度;
51
SQL
>
select
name,length(name),addr,length(addr),sal,length(to_char(sal))
from
gao.nchar_tst;
52
53
NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))
54
--
---- ------------ ---------------- ------------ --------- --------------------
55
高乾竞
3
北京市海锭区
6
9999.99
7
56
57
58
59
7
.
LOWER
60
返回字符串,并将所有的字符小写
61
SQL
>
select
lower
(
'
AaBbCcDd
'
)AaBbCcDd
from
dual;
62
63
AABBCCDD
64
--
------
65
aabbccdd
66
67
68
8
.
UPPER
69
返回字符串,并将所有的字符大写
70
SQL
>
select
upper
(
'
AaBbCcDd
'
)
upper
from
dual;
71
72
UPPER
73
--
------
74
AABBCCDD
75
76
77
78
9
.RPAD和LPAD(粘贴字符)
79
RPAD 在列的右边粘贴字符
80
LPAD 在列的左边粘贴字符
81
SQL
>
select
lpad(rpad(
'
gao
'
,
10
,
'
*
'
),
17
,
'
*
'
)
from
dual;
82
83
LPAD(RPAD(
'
GAO
'
,
1
84
--
---------------
85
*******
gao
*******
86
不够字符则用
*
来填满
87
88
89
10
.LTRIM和RTRIM
90
LTRIM
删除左边出现的字符串
91
RTRIM
删除右边出现的字符串
92
SQL
>
select
ltrim
(
rtrim
(
'
gao qian jing
'
,
'
'
),
'
'
)
from
dual;
93
94
LTRIM
(
RTRIM
(
'
95
-------------
96
gao qian jing
97
98
99
11.SUBSTR(string,start,count)
100
取子字符串,从start开始,取count个
101
SQL> select substr(
'
13088888888
'
,3,8) from dual;
102
103
SUBSTR(
'
104
--
------
105
08888888
106
107
108
12
.
REPLACE
(
'
string
'
,
'
s1
'
,
'
s2
'
)
109
string 希望被替换的字符或变量
110
s1 被替换的字符串
111
s2 要替换的字符串
112
SQL
>
select
replace
(
'
he love you
'
,
'
he
'
,
'
i
'
)
from
dual;
113
114
REPLACE
(
'
H
115
----------
116
i love you
117
118
119
13.SOUNDEX
120
返回一个与给定的字符串读音相同的字符串
121
SQL> create table table1(xm varchar(8));
122
SQL> insert into table1 values(
'
weather
'
);
123
SQL> insert into table1 values(
'
wether
'
);
124
SQL> insert into table1 values(
'
gao
'
);
125
126
SQL> select xm from table1 where soundex(xm)=soundex(
'
weather
'
);
127
128
XM
129
--------
130
weather
131
wether
132
133
134
14.TRIM(
'
s
'
from
'
string
'
)
135
LEADING 剪掉前面的字符
136
TRAILING 剪掉后面的字符
137
如果不指定,默认为空格符
138
139
15.ABS
140
返回指定值的绝对值
141
SQL> select abs(100),abs(-100) from dual;
142
143
ABS(100) ABS(-100)
144
--------- ---------
145
100 100
146
147
148
16.ACOS
149
给出反余弦的值
150
SQL> select acos(-1) from dual;
151
152
ACOS(-1)
153
---------
154
3.1415927
155
156
157
17.ASIN
158
给出反正弦的值
159
SQL> select asin(0.5) from dual;
160
161
ASIN(0.5)
162
---------
163
.52359878
164
165
166
18.ATAN
167
返回一个数字的反正切值
168
SQL> select atan(1) from dual;
169
170
ATAN(1)
171
---------
172
.78539816
173
174
175
19.CEIL
176
返回大于或等于给出数字的最小整数
177
SQL> select ceil(3.1415927) from dual;
178
179
CEIL(3.1415927)
180
---------------
181
4
182
183
184
20.COS
185
返回一个给定数字的余弦
186
SQL> select cos(-3.1415927) from dual;
187
188
COS(-3.1415927)
189
---------------
190
-1
191
192
193
21.COSH
194
返回一个数字反余弦值
195
SQL> select cosh(20) from dual;
196
197
COSH(20)
198
---------
199
242582598
200
201
202
22.EXP
203
返回一个数字e的n次方根
204
SQL> select exp(2),exp(1) from dual;
205
206
EXP(2) EXP(1)
207
--------- ---------
208
7.3890561 2.7182818
209
210
211
23.FLOOR
212
对给定的数字取整数
213
SQL> select floor(2345.67) from dual;
214
215
FLOOR(2345.67)
216
--------------
217
2345
218
219
220
24.LN
221
返回一个数字的对数值
222
SQL> select ln(1),ln(2),ln(2.7182818) from dual;
223
224
LN(1) LN(2) LN(2.7182818)
225
--------- --------- -------------
226
0 .69314718 .99999999
227
228
229
25.LOG(n1,n2)
230
返回一个以n1为底n2的对数
231
SQL> select log(2,1),log(2,4) from dual;
232
233
LOG(2,1) LOG(2,4)
234
--------- ---------
235
0 2
236
237
238
26.MOD(n1,n2)
239
返回一个n1除以n2的余数
240
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;
241
242
MOD(10,3) MOD(3,3) MOD(2,3)
243
--------- --------- ---------
244
1 0 2
245
246
247
27.POWER
248
返回n1的n2次方根
249
SQL> select power(2,10),power(3,3) from dual;
250
251
POWER(2,10) POWER(3,3)
252
----------- ----------
253
1024 27
254
255
256
28.ROUND和TRUNC
257
按照指定的精度进行舍入
258
SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;
259
260
ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
261
----------- ------------ ----------- ------------
262
56 -55 55 -55
263
264
265
29.SIGN
266
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
267
SQL> select sign(123),sign(-100),sign(0) from dual;
268
269
SIGN(123) SIGN(-100) SIGN(0)
270
--------- ---------- ---------
271
1 -1 0
272
273
274
30.SIN
275
返回一个数字的正弦值
276
SQL> select sin(1.57079) from dual;
277
278
SIN(1.57079)
279
------------
280
1
281
282
283
31.SIGH
284
返回双曲正弦的值
285
SQL> select sin(20),sinh(20) from dual;
286
287
SIN(20) SINH(20)
288
--------- ---------
289
.91294525 242582598
290
291
292
32.SQRT
293
返回数字n的根
294
SQL> select sqrt(64),sqrt(10) from dual;
295
296
SQRT(64) SQRT(10)
297
--------- ---------
298
8 3.1622777
299
300
301
33.TAN
302
返回数字的正切值
303
SQL> select tan(20),tan(10) from dual;
304
305
TAN(20) TAN(10)
306
--------- ---------
307
2.2371609 .64836083
308
309
310
34.TANH
311
返回数字n的双曲正切值
312
SQL> select tanh(20),tan(20) from dual;
313
314
TANH(20) TAN(20)
315
--------- ---------
316
1 2.2371609
317
318
319
320
35.TRUNC
321
按照指定的精度截取一个数
322
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;
323
324
TRUNC1 TRUNC(124.16666,2)
325
--------- ------------------
326
100 124.16
327
328
329
330
36.ADD_MONTHS
331
增加或减去月份
332
SQL> select to_char(add_months(to_date(
'
199912
'
,
'
yyyymm
'
),2),
'
yyyymm
'
) from dual;
333
334
TO_CHA
335
------
336
200002
337
SQL> select to_char(add_months(to_date(
'
199912
'
,
'
yyyymm
'
),-2),
'
yyyymm
'
) from dual;
338
339
TO_CHA
340
------
341
199910
342
343
344
37.LAST_DAY
345
返回日期的最后一天
346
SQL> select to_char(sysdate,
'
yyyy.mm.dd
'
),to_char((sysdate)+1,
'
yyyy.mm.dd
'
) from dual;
347
348
TO_CHAR(SY TO_CHAR((S
349
---------- ----------
350
2004.05.09 2004.05.10
351
SQL> select last_day(sysdate) from dual;
352
353
LAST_DAY(S
354
----------
355
31-5月 -04
356
357
358
38.MONTHS_BETWEEN(date2,date1)
359
给出date2-date1的月份
360
SQL> select months_between(
'
19
-
12月
-
1999
'
,
'
19
-
3月
-
1999
'
) mon_between from dual;
361
362
MON_BETWEEN
363
-----------
364
9
365
SQL>selectmonths_between(to_date(
'
2000.05
.
20
'
,
'
yyyy.mm.dd
'
),to_date(
'
2005.05
.
20
'
,
'
yyyy.mm.dd
'
)) mon_betw from dual;
366
367
MON_BETW
368
---------
369
-60
370
371
372
39.NEW_TIME(date,
'
this
'
,
'
that
'
)
373
给出在this时区=other时区的日期和时间
374
SQL> select to_char(sysdate,
'
yyyy.mm.dd hh24:mi:ss
'
) bj_time,to_char(new_time
375
2 (sysdate,
'
PDT
'
,
'
GMT
'
),
'
yyyy.mm.dd hh24:mi:ss
'
) los_angles from dual;
376
377
BJ_TIME LOS_ANGLES
378
------------------- -------------------
379
2004.05.09 11:05:32 2004.05.09 18:05:32
380
381
382
40.NEXT_DAY(date,
'
day
'
)
383
给出日期date和星期x之后计算下一个星期的日期
384
SQL> select next_day(
'
18
-
5月
-
2001
'
,
'
星期五
'
) next_day from dual;
385
386
NEXT_DAY
387
----------
388
25-5月 -01
389
390
391
392
41.SYSDATE
393
用来得到系统的当前日期
394
SQL> select to_char(sysdate,
'
dd
-
mm
-
yyyy
day
'
) from dual;
395
396
TO_CHAR(SYSDATE,
'
397
--
---------------
398
09
-
05
-
2004
星期日
399
trunc(date,fmt)按照给出的要求将日期截断,如果fmt
=
'
mi
'
表示保留分,截断秒
400
SQL
>
select
to_char(trunc(sysdate,
'
hh
'
),
'
yyyy.mm.dd hh24:mi:ss
'
) hh,
401
2
to_char(trunc(sysdate,
'
mi
'
),
'
yyyy.mm.dd hh24:mi:ss
'
) hhmm
from
dual;
402
403
HH HHMM
404
--
----------------- -------------------
405
2004.05
.
09
11
:
00
:
00
2004.05
.
09
11
:
17
:
00
406
407
408
409
42
.CHARTOROWID
410
将字符数据类型转换为ROWID类型
411
SQL
>
select
rowid,rowidtochar(rowid),ename
from
scott.emp;
412
413
ROWID ROWIDTOCHAR(ROWID) ENAME
414
--
---------------- ------------------ ----------
415
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
416
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
417
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
418
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
419
420
421
43
.
CONVERT
(c,dset,sset)
422
将源字符串 sset从一个语言字符集转换到另一个目的dset字符集
423
SQL
>
select
convert
(
'
strutz
'
,
'
we8hp
'
,
'
f7dec
'
) "conversion"
from
dual;
424
425
conver
426
--
----
427
strutz
428
429
430
44
.HEXTORAW
431
将一个十六进制构成的字符串转换为二进制
432
433
434
45
.RAWTOHEXT
435
将一个二进制构成的字符串转换为十六进制
436
437
438
439
46
.ROWIDTOCHAR
440
将ROWID数据类型转换为字符类型
441
442
443
444
47
.TO_CHAR(date,
'
format
'
)
445
SQL
>
select
to_char(sysdate,
'
yyyy/mm/dd hh24:mi:ss
'
)
from
dual;
446
447
TO_CHAR(SYSDATE,
'
YY
448
-------------------
449
2004/05/09 21:14:41
450
451
452
453
48.TO_DATE(string,
'
format
'
)
454
将字符串转化为ORACLE中的一个日期
455
456
457
49.TO_MULTI_BYTE
458
将字符串中的单字节字符转化为多字节字符
459
SQL> select to_multi_byte(
'
高
'
) from dual;
460
461
TO
462
--
463
高
464
465
466
50.TO_NUMBER
467
将给出的字符转换为数字
468
SQL> select to_number(
'
1999
'
) year from dual;
469
470
YEAR
471
---------
472
1999
473
474
475
51.BFILENAME(dir,file)
476
指定一个外部二进制文件
477
SQL>insert into file_tb1 values(bfilename(
'
lob_dir1
'
,
'
image1.gif
'
));
478
479
480
52.CONVERT(
'
x
'
,
'
desc
'
,
'
source
'
)
481
将x字段或变量的源source转换为desc
482
SQL> select sid,serial#,username,decode(command,
483
2 0,
'
none
'
,
484
3 2,
'
insert
'
,
485
4 3,
486
5
'
select
'
,
487
6 6,
'
update
'
,
488
7 7,
'
delete
'
,
489
8 8,
'
drop
'
,
490
9
'
other
'
) cmd from v$session where type!=
'
background
'
;
491
492
SID SERIAL# USERNAME CMD
493
--------- --------- ------------------------------ ------
494
1 1 none
495
2 1 none
496
3 1 &nb