Rumah > Artikel > pangkalan data > Apakah fungsi oracle?
Fungsi Oracle termasuk: 1. Fungsi rentetan, termasuk ASCII(), CONCAT(), dsb.; 2. Fungsi angka, termasuk ABS(), COS(), dsb. 3. Fungsi tarikh, termasuk EXTRACT( ), ROUND(), dsb.; 4. Fungsi penukaran, termasuk TO_CHAR(), TO_DATE(), dsb.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.
Pernyataan Oracle SQL sering menggunakan fungsi Oracle sendiri. Fungsi ini memperkayakan fungsi bahasa SQL dan memberikan lebih kebolehoperasian untuk Oracle SQL. Fungsi Oracle boleh menerima sifar atau lebih parameter input dan mengembalikan hasil output. Terdapat dua jenis fungsi utama yang digunakan dalam pangkalan data Oracle:
1 Fungsi baris tunggal : Apabila setiap fungsi digunakan pada rekod jadual, hanya nilai lajur dalam. satu baris boleh dimasukkan sebagai parameter (atau pemalar), dan mengembalikan hasil.
Contohnya 1: MOD(X,Y) ialah fungsi baki yang mengembalikan baki X dibahagikan dengan Y, di mana X dan Y boleh menjadi nilai lajur atau pemalar.
Contohnya 2: TO_CHAR(X,'YYYYMMDD') ialah fungsi yang menukar jenis masa kepada rentetan, di mana X boleh menjadi lajur jenis masa tertentu (tarikh) dalam baris, atau ia boleh pemalar jenis masa.
Fungsi baris tunggal yang biasa digunakan adalah kira-kira seperti berikut:
Fungsi rentetan: beroperasi pada rentetan, seperti: TO_CHAR(), SUBSTR(), DECODE() dll.
Fungsi angka: melakukan pengiraan atau operasi pada nilai berangka dan mengembalikan nombor. Contohnya: ABS(), MOD(), ROUND(), dsb.
Fungsi penukaran: Tukar satu jenis data kepada jenis lain: contohnya: TO_CHAR(), TO_NUMBER(), TO_DATE(), dsb.
Fungsi tarikh: fungsi yang beroperasi pada masa dan tarikh. Contohnya: TRUNC(), SYSDATE(), ADD_MONTHS(), dsb.
2. Fungsi pengagregatan : Fungsi pengagregatan boleh beroperasi pada berbilang baris data pada masa yang sama dan mengembalikan hasil. Contohnya, SUM(x) mengembalikan jumlah lajur x dalam set hasil.
1. Fungsi rentetan
Fungsi aksara menerima parameter aksara, yang boleh menjadi lajur dalam jadual atau ungkapan rentetan.
Fungsi aksara yang biasa digunakan:
|
Penerangan |
||||||||||||||||||||||||
|
Mengembalikan kod ASCII bagi aksara X | ||||||||||||||||||||||||
CONCAT(X,Y) | Rentetan penggabungan X dan Y | ||||||||||||||||||||||||
INSTR(X,STR[,START][,N) | Cari str daripada X, anda boleh tentukan bermula dari mula, atau anda boleh tentukan permulaan dari n Mula | ||||||||||||||||||||||||
LENGTH(X) | Kembalikan panjang X td> | ||||||||||||||||||||||||
LOWER(X) | X ditukar kepada huruf kecil | ||||||||||||||||||||||||
UPPER(X) | X ditukar kepada huruf besar | ||||||||||||||||||||||||
LTRIM( X[,TRIM_STR ]) | Potong rentetan trim_str dari sebelah kiri RTRIM(X[,TRIM_STR]) | Potong rentetan trim_str di sebelah kanan X dan potong ruang secara lalai | |||||||||||||||||||||||
TRIM([TRIM_STR FROM]X) | Potong rentetan trim_str pada kedua-dua belah /tr> | ||||||||||||||||||||||||
REPLACE(X,lama,baharu) | Cari lama dalam X dan gantikannya dengan yang baharu | ||||||||||||||||||||||||
SUBSTR(X,start[,length]) | Returns rentetan X, bermula dari mula, memintas panjang Aksara, panjang lalai, lalai hingga akhir |
Contoh | Contoh hasil |
PILIH ASCII('a') DARI dwi; | 97 |
PILIH CONCAT('Hello', 'world') DARI dwi; | Helloworld |
PILIH INSTR('Hello world',' or') DARI dwi; | 8 |
PILIH LENGTH('Hello') DARIPADA dwi; ') DARI dwi; | hello |
PILIH ATAS('hello') DARI dwi; | HELLO |
PILIH LTRIM('=Hello=','=') DARI dwi; | Hello= |
PILIH RTRIM('=Hello=','=') DARI dwi; | =Hello |
PILIH TRIM('='FROM'=Hello=') DARI dwi ; | Helo |
SELECT REPLACE('ABCDE','CD','AAA') DARI dwi; | ABAAE|
PILIH SUBSTR('ABCDE',2,3) DARI dwi ; | BCD |
2. Fungsi angka
Fungsi angka menerima parameter angka, yang boleh datang dari lajur dalam jadual atau menjadi ungkapan angka.
|
Penerangan | Contoh | ||||||||||||||||||||||||||||||||||||
ABS(X) | Nilai mutlak X | ABS(-3)=3 | ||||||||||||||||||||||||||||||||||||
ACOS(X) | Arccosine of | Kosinus | COS(1)=0.54030230586814 | |||||||||||||||||||||||||||||||||||
CEIL(X) | Nilai minimum lebih besar daripada atau sama dengan X | CEIL(5.4)=6 | ||||||||||||||||||||||||||||||||||||
FLOOR(X) | Nilai maksimum kurang daripada atau sama dengan X | FLOOR(5.8)=5 | ||||||||||||||||||||||||||||||||||||
LOG(X,Y) | X ialah asas Y Logaritma | LOG(2,4)=2 | ||||||||||||||||||||||||||||||||||||
MOD( X,Y) | Baki X dibahagikan dengan Y | MOD(8, 3)=2 td> | ||||||||||||||||||||||||||||||||||||
KUASA(X,Y) | X kepada kuasa Y | KUASA(2, 3)=8 | ||||||||||||||||||||||||||||||||||||
PUSINGAN(X[,Y]) | X berada pada kedudukan ke-Y Membundarkan | BULAT(3.456, 2)=3.46 | ||||||||||||||||||||||||||||||||||||
SQRT (X) | Punca kuasa dua bagi X | SQRT(4)=2 | ||||||||||||||||||||||||||||||||||||
TRUNC(X[,Y]) | X dipotong pada kedudukan Y | TRUNC(3.456, 2)=3.45 |
Arahan:
1.
Apabila y lalai digunakan, lalai y=0 contohnya: ROUND(3.56)=4. y ialah integer positif, yang dibundarkan kepada y tempat perpuluhan. BULAT(5.654,2)=5.65. y ialah integer negatif, dibundarkan kepada |y| di sebelah kiri titik perpuluhan. BULAT(351.654,-2)=400.2. TRUNC(x[,y]), memintas terus tanpa membundar.
Apabila y lalai digunakan, lalai y=0 contohnya: TRUNC (3.56)=3. Y ialah integer positif, yang dibundarkan kepada y tempat perpuluhan. TRUNC (5.654,2)=5.65. y ialah integer negatif, dibundarkan kepada |y| di sebelah kiri titik perpuluhan. TRUNC (351.654,-2)=300.3. Fungsi tarikh
Fungsi tarikh beroperasi pada tarikh. Fungsi tarikh yang biasa digunakan ialah:1, ADD_MONTHS(d,n), tambah bilangan bulan n yang ditentukan pada tarikh tertentu d, dan kembalikan tarikh baharu yang dikira.
d mewakili tarikh, n mewakili bilangan bulan yang akan ditambah. Contoh:SELECT SYSDATE,add_months(SYSDATE,5) FROM dual;
2 LAST_DAY(d), mengembalikan hari terakhir bulan pada tarikh yang ditentukan .
Contoh:SELECT SYSDATE,last_day(SYSDATE) FROM dual;
3 BULAT(d[,fmt]), mengembalikan format fmt Nilai tarikh bulat. , d ialah tarikh, fmt ialah format
model. Fmt lalai ialah DDD, iaitu hari dalam sebulan. Ø ① Jika fmt ialah "TAHUN", ia dibundarkan kepada 1 Januari tahun tertentu, iaitu separuh pertama tahun itu dibuang dan separuh kedua tahun itu dianggap sebagai tahun berikutnya. tahun. Ø ② Jika fmt ialah "BULAN", ia akan dibundarkan kepada 1 haribulan tertentu, iaitu, bulan sebelumnya akan dibundarkan, dan separuh kedua bulan itu akan dianggap sebagai bulan depan. Ø ③ Lalai ialah "DDD", iaitu, hari tertentu dalam bulan itu, hari terdekat, separuh hari pertama dibuang dan separuh kedua hari itu dianggap sebagai hari berikutnya hari. Ø ④ Jika fmt ialah "HARI", ia akan dibundarkan kepada Ahad minggu terdekat, iaitu separuh pertama minggu akan dibundarkan dan separuh kedua minggu itu akan digunakan sebagai hari Ahad minggu hadapan. Contoh:SELECT SYSDATE,ROUND(SYSDATE),ROUND(SYSDATE,'day'), ROUND(SYSDATE,'month'),ROUND(SYSDATE,'year') FROM dual;Fungsi yang sepadan dengan ROUND ialah TRUNC (d[,fmt]), yang beroperasi pada tarikh TRUNC sangat serupa ke ROUND , tetapi tarikh tidak dibundarkan dan dipintas terus ke hari pertama format yang sepadan.
4. EKSTRAK(fmt DARI d), ekstrak bahagian tarikh tertentu.
fmt ialah: TAHUN, BULAN, HARI, JAM, MINIT, KEDUA. Antaranya, YEAR, MONTH dan DAY boleh memadankan jenis DATE atau jenis TIMESTAMP tetapi HOUR, MINUTE dan SECOND mesti sepadan dengan jenis TIMESTAMP. JAM Zon waktu tidak ditambahkan pada hasil yang sepadan, jadi keputusan yang dijalankan di China adalah 8 jam lebih kecil. Contoh:SELECT SYSDATE "date", EXTRACT(YEAR FROM SYSDATE)"year", EXTRACT(MONTH FROM SYSDATE)"month", EXTRACT(DAY FROM SYSDATE)"day", EXTRACT(HOUR FROM SYSTIMESTAMP)"hour", EXTRACT(MINUTE FROM SYSTIMESTAMP)"minute", EXTRACT(SECOND FROM SYSTIMESTAMP)"second" FROM dual;
1, TO_CHAR(d|n[,fmt])
Tukar tarikh dan nombor kepada rentetan berformat. Fmt ialah rentetan terformat Demonstrasi kod: TO_CHAR pemprosesan tarikhSELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS')"date" FROM dual;Analisis kod: dalam pemformatan Dalam rentetan , gunakan petikan berganda untuk memetik aksara tidak berformat Untuk pemformatan nombor, aksara pemformatan ialah:
Parameter
|
Contoh | Penjelasan | ||||||||||||||||||||||||
9 | 999 | Paparkan nombor pada kedudukan yang ditentukan | ||||||||||||||||||||||||
. | 9.9 | Kembalikan titik perpuluhan pada kedudukan yang ditentukan | , | 99,99 | Kembalikan koma pada kedudukan yang ditentukan | |||||||||||||||||||||
$ | $999 | Kembalikan tanda dolar di permulaan nombor | ||||||||||||||||||||||||
EEEE | 9.99EEEE | Notasi saintifik | ||||||||||||||||||||||||
L | L999 | sebelum nombor Tambah simbol mata wang tempatan | ||||||||||||||||||||||||
PR | 999PR td> | Jika nombornya negatif, gunakan kurungan sudut untuk menunjukkannya |
代码演示:TO_CHAR对数字的处理
SELECT TO_CHAR(-123123.45,'L9.9EEEEPR')"date" FROM dual;
2、TO_DATE(X,[,fmt])
把一个字符串以fmt格式转换成一个日期类型
3、TO_NUMBER(X,[,fmt])
把一个字符串以fmt格式转换为一个数字
代码演示:TO_NUM函数
SELECT TO_NUMBER('-$12,345.67','$99,999.99')"num" FROM dual;
1、NVL(X,VALUE)
如果X为空,返回value,否则返回X
例:对工资是2000元以下的员工,如果没发奖金,每人奖金100元
代码演示:NVL函数
SQL> SELECT ENAME,JOB,SAL,NVL(COMM,100) FROM EMP WHERE SAL<2000; ------------------------------------------------------------------- ENAME JOB SAL NVL(COMM,100) SMITH CLERK 800 100 ALLEN SALESMAN 1600 300 WARD SALESMAN 1250 500 MARTIN SALESMAN 1250 1400 TURNER SALESMAN 1500 50 ADAMS CLERK 1100 100 JAMES CLERK 950 100 ------------------------------------------------------------------- 7 rows selected
2、NVL2(x,value1,value2)
如果x非空,返回value1,否则返回value2
例:对EMP表中工资为2000元以下的员工,如果没有奖金,则奖金为200元,如果有奖金,则在原来的奖金基础上加100元
代码演示:NVL2函数
SQL> SELECT ENAME,JOB,SAL,NVL2(COMM,comm+100,200) "comm" 2 FROM EMP WHERE SAL<2000; ------------------------------------------------------------------- ENAME JOB SAL comm SMITH CLERK 800 200 ALLEN SALESMAN 1600 400 WARD SALESMAN 1250 600 MARTIN SALESMAN 1250 1500 TURNER SALESMAN 1500 150 ADAMS CLERK 1100 200 JAMES CLERK 950 200 MILLER CLERK 1300 200 ------------------------------------------------------------------------------------------------------- 8 rows selected
聚合函数同时对一组数据进行操作,返回一行结果,比如计算一组数据的总和,平均值
等。
名称 |
作用 |
语法 |
AVG |
平均值 |
AVG(表达式) |
SUM |
求和 |
SUM(表达式) |
MIN、MAX |
最小值、最大值 |
MIN(表达式)、MAX(表达式) |
COUNT |
数据统计 |
COUNT(表达式) |
例:求本月所有员工的基本工资总和
代码演示:sum函数
SQL> SELECT SUM(sal) FROM emp; ------------------------------------------------------------------- SUM(SAL) 29025
例:求不同部门的平均工资
代码演示:AVG函数下的分组查询
SQL> SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO; ------------------------------------------------------------------- DEPTNO AVG(SAL) --------- ---------- 30 1566.66666 20 2175 10 2916.66666
推荐教程:《Oracle教程》
Atas ialah kandungan terperinci Apakah fungsi oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!