ホームページ  >  記事  >  データベース  >  Oracle でよく使用される関数を要約して整理します。

Oracle でよく使用される関数を要約して整理します。

WBOY
WBOY転載
2022-08-30 14:00:182513ブラウズ

この記事は、Oracleに関する知識を提供するもので、Oracleでよく使われる機能を詳しく解説し、サンプルコードを交えて紹介していますので、皆様の学習や仕事の参考になれば幸いです。 ,みんなが助けてくれることを願っています。

Oracle でよく使用される関数を要約して整理します。

推奨チュートリアル: 「Oracle ビデオ チュートリアル

Oracle データベースでは、主に 2 種類の関数が使用されます。

1. 単一行関数: 1 行のデータを操作し、結果を返します。

    #一般的に使用される単一行関数は次のとおりです:
  • 文字列関数: 文字列を操作します。
  • Number 関数: 数値を計算し、数値を返します。
  • Date 関数: 日付と時刻を処理します。
  • 変換関数: あるデータ型を別のデータ型に変換できます。
2. 集計関数 (複数行関数、グループ関数、グループ関数): 複数行のデータを操作し、結果を返します。たとえば、SUM

1. 文字列関数

文字関数は文字パラメータを受け入れます。これらのパラメータは、テーブル内の列または文字列式です。

一般的に使用される文字関数:

関数説明ASCII(X) 文字の ASCII コードを返します XXX#CONCAT(X,Y)#INSTR(X,STR[,START ][,N)X から str を検索します。start から開始するか、n から開始するかを指定できますLENGTH(X)を返します。 XXLOWER(X)XX の長さは小文字に変換されますUPPER(X)X を大文字に変換しますLTRIM(X[,TRIM_STR])X の左側を切り取りますtrim_str 文字列を削除し、デフォルトでスペースを切り詰めます TRIM([ TRIM_STR FROM]X)X の両側の trim_str 文字列を切り詰めます。デフォルトではスペースは切り取られますREPLACE(X,old,new)X で古いものを見つけて新しいものに置き換えますSUBSTR(X,start[,length]) の文字列を返します#例結果の例SELECT ASCII('a') FROM Dual;
接続文字列
#RTRIM(X[,TRIM_STR]) X の右側の trim_str 文字列を切り詰めます。デフォルトでは Spaces
#97

SELECT CONCAT('Hello','world') FROM Dual;SELECT INSTR ('Hello world', 'または') FROM デュアル;SELECT LENGTH('Hello') FROM デュアル;SELECT LOWER('Hello') FROM デュアル;SELECT UPPER('hello') FROM デュアル; ##SELECT LTRIM('=Hello=','=') FROM Dual;Hello=SELECT RTRIM ('=Hello=','=') FROM デュアル;=HelloSELECT TRIM('='FROM'= Hello=') FROM デュアル; HelloSELECT REPLACE('ABCDE','CD','AAA')FROM Dual; ABAAAESELECT SUBSTR('ABCDE',2,3) FROM Dual;BCD二、数値関数数値関数は数値パラメータを受け入れます。パラメータはテーブル内の列から取得することも、数値式にすることもできます。 #関数説明例
Helloworld
8
5
hello
HELLO

ABS(X)

#ACOS(1)=0

COS(X)XFLOOR(5.8)=5LOG(2,4)=2##MOD(8,3)=2##POWER( 2, 3)=8#ROUND(X[,Y])##XX は Y 番目の位置で四捨五入されますROUND(3.456, 2) =3.46SQRT(X)XSQRT(4)=2## の平方根XX は Y 位置で切り捨てられます
Cosine COS(1)=0.54030230586814## の絶対値 ##CEIL(X)
CEIL(5.4)=6 ## 以上の最小値##FLOOR(X) X
LOG(X,Y) 以下の最大値 XX は底 Y の対数です
MOD(X,Y) X を Y# で割った余り
##POWER(X,Y) X の Y# 乗
#TRUNC(X[,Y])
TRUNC(3.456, 2)=3.45

手順:

1.ROUND(X[,Y])、四捨五入。

デフォルトの y が使用される場合、デフォルトの y=0 になります (例: ROUND(3.56)=4)。

y は正の整数で、小数点以下 y 桁に四捨五入されます。 ROUND(5.654,2)=5.65。

y は負の整数で、小数点の左側の |y| 桁に丸められます。 ROUND(351.654,-2)=400。

2.TRUNC(x[,y])、丸めずに直接インターセプトします。

デフォルトの y が使用される場合、デフォルトの y=0 になります (例: TRUNC (3.56)=3)。

Y は正の整数で、小数点以下 y 桁に丸められます。 TRUNC (5.654,2)=5.65。

y は負の整数で、小数点の左側の |y| 桁に丸められます。 TRUNC (351.654,-2)=300。

3. 日付関数

日付関数は日付を操作します。一般的に使用される日付関数は、

1、ADD_MONTHS(d,n) で、指定された月数 n を特定の日付 d に加算し、計算された新しい日付を返します。

d は日付を表し、n は加算される月数を表します。

例:

SELECT SYSDATE,add_months(SYSDATE,5) FROM dual;

2、LAST_DAY(d)、指定された月の最後の日を返します。日付。

例:

SELECT SYSDATE,last_day(SYSDATE) FROM dual;

3, ROUND(d[,fmt])、fmt を返します。は形式の丸められた日付値、d は日付、fmt は形式

モデルです。デフォルトの fmt は DDD、つまり月内の日です。

  • fmt が "YEAR" の場合、特定の年の 1 月 1 日に四捨五入されます。つまり、年の前半は切り捨てられ、後半は切り捨てられます。年は翌年とみなされます。

  • fmt が「MONTH」の場合、ある月の 1 日に四捨五入、つまり前月を切り捨て、月の後半を月とみなします。来月。

  • デフォルトは「DDD」です。つまり、月内の特定の日、最も近い日、その日の前半は破棄され、後半は破棄されます。翌日とみなします。

  • fmt が「DAY」の場合、最も近い週の日曜日に四捨五入されます。つまり、週の前半は破棄され、後半は破棄されます。週は次の週の日曜日とみなされます。

例:

SELECT SYSDATE,ROUND(SYSDATE),ROUND(SYSDATE,'day'),

ROUND(SYSDATE,'month'),ROUND(SYSDATE,'year') FROM dual;

ROUND に対応する関数は TRUNC(d[,fmt]) で、日付を操作します。 TRUNC ROUND と非常に似ていますが、日付が四捨五入されず、対応する形式の最初の日に直接インターセプトされる点が異なります。

4, EXTRACT(fmt FROM d)、日付の特定の部分を抽出します。

fmt は、年、月、日、時、分、秒です。このうち、YEAR、MONTH、DAY は DATE 型または TIMESTAMP 型と一致しますが、HOUR、MINUTE、SECOND は TIMESTAMP 型と一致する必要があります。

HOUR タイムゾーンは一致結果に追加されないため、中国で実行される結果は 8 時間小さくなります。

例:

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;

4. 変換関数

変換関数は、値をあるデータ型から別のデータ型に変換します。一般的な変換関数は次のとおりです:

1, TO_CHAR(d|n[,fmt])

日付と数値を指定された形式の文字列に変換します。 Fmt はフォーマットされた文字列です。

コードのデモ: 日付の TO_CHAR 処理

SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS')"date" FROM dual;

コード分析:

フォーマットされた文字列では、double を使用します。書式設定されていない文字を引用符で囲みます。

#数値の書式設定の場合、書式設定文字は次のとおりです:

#.9.9小数点を返す位置を指定します##,$EEEELPR

代码演示: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函数

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函数

SELECT ENAME,JOB,SAL,NVL2(COMM,comm+100,200) "comm" 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

六、聚合函数

聚合函数同时对一组数据进行操作,返回一行结果,比如计算一组数据的总和,平均值等。

パラメータ Example 説明
#9 999 指定した位置に数字を表示
99,99 位置 カンマを返します
$999 数値の先頭にドル記号を返します
9.99EEEE 科学表記法
L999 現地通貨記号を追加する数値の前に
999PR 数値が負の場合は、山かっこを使用して表現します
名称 作用 语法
AVG 平均值 AVG(表达式)
SUM 求和 SUM(表达式)
MIN、MAX 最小值、最大值 MIN(表达式)、MAX(表达式)
COUNT 数据统计 COUNT(表达式)

例:求本月所有员工的基本工资总和

代码演示:sum函数

SELECT SUM(sal) FROM emp;

-------------------------------------------------------------------

SUM(SAL)

29025

例:求不同部门的平均工资

代码演示:AVG函数下的分组查询

SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO;

-------------------------------------------------------------------

DEPTNO    AVG(SAL)

---------    ----------

30    1566.66666

20     2175

10    2916.66666

推荐教程:《Oracle视频教程

以上がOracle でよく使用される関数を要約して整理します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。