Inhaltsverzeichnis
1、数字函数
3、日期时间函数
附录:关于Decode函数
Heim Datenbank MySQL-Tutorial Oracle经常用到的一些函数

Oracle经常用到的一些函数

Jun 07, 2016 pm 03:21 PM
nvl oracle s 函数 数字

1、数字函数 NVL( string1, replace_with) :如果string1为NULL,则NVL函数返回replace_with的,否则返回string1的,如果两个参数都为NULL ,则返回NULL。示例如下: SQL select NVL(NULL,1) from dual; NVL(NULL,1)----------- 1 SQL select NVL(12,1) from

1、数字函数

NVL( string1, replace_with) :如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。示例如下:

SQL> select NVL(NULL,1)  from dual;
 
NVL(NULL,1)
-----------
          1
 
SQL> select NVL(12,1) from dual;
 
 NVL(12,1)
----------
        12
 
SQL> select NVL('',1) from dual;           -----单引号里没有空格
 
NVL('',1)
---------
1
Nach dem Login kopieren

NVL的扩展- NVL2(E1, E2, E3)

             Oracle在NVL函数的功能上扩展,提供了NVL2函数。  NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,否则返回E2。示例如下: 

SQL> select nvl2(NULL,12,3) from dual;
 
NVL2(NULL,12,3)
---------------
              3
 
SQL> select nvl2(5,12,3) from dual;
 
NVL2(5,12,3)
------------
          12
Nach dem Login kopieren

SIGN(n) :该函数用于检测数字的正负.如果数字n小于0,则函数的返回值位-1;如果数字n的值等于0,则函数的返回值等于0,如果数字n大于0,则函数的返回值等于1.

SQL> select SIGN(-10),SIGN(0),SIGN(5) from dual;
 
 SIGN(-10)    SIGN(0)    SIGN(5)
---------- ---------- ----------
        -1          0          1
Nach dem Login kopieren

 CEIL(n) :该函数用于返回大于等于数字n的最小整数.    

SQL> select  ceil(15),ceil(15.1) from dual;
 
  CEIL(15) CEIL(15.1)
---------- ----------
        15         16
 
Nach dem Login kopieren

FLOOR(n):该函数用于返回小于等于数字n的最大整数。

SQL>  select floor(15),floor(15.1) from dual;
 
 FLOOR(15) FLOOR(15.1)
---------- -----------
        15          15
Nach dem Login kopieren

MOD(m,n) :该函数用于返回两个数字相除后的余数.如果数字n为0,则返回结果为m

SQL> select  mod(10,3) from dual;
 
 MOD(10,3)
----------
         1
SQL> select  mod(10,0) from dual;
 
 MOD(10,0)
----------
        10 
Nach dem Login kopieren

ROUND(n,[m]) :该函数用于执行四舍五入运算;如果省略m,则四舍五入至整数位;如果m是负数,则四舍五入到小数点前m位;如果m是整数,则四舍五入至小数点后m位.示例如下:

SQL> select round(65.698) from dual;
 
ROUND(65.698)
-------------
           66
 
SQL> select round(65.698,1) from dual;
 
ROUND(65.698,1)
---------------
           65.7
 
SQL> select round(65.698,-1) from dual;
 
ROUND(65.698,-1)
----------------
              70
Nach dem Login kopieren

 TRUNC(n,[m]) :该函数用于截取数字。如果省略数字m,则将数字n的小数部分截去;如果数字m是正数,则将数字n截取到小数点后的第m位;如果数字m是负数,则将数字n截取到小数点前m位.示例如下:

SQL> select trunc(65.698) from dual;
 
TRUNC(65.698)
-------------
           65
 
SQL> select trunc(65.698,2) from dual;
 
TRUNC(65.698,2)
---------------
          65.69
 
SQL> select trunc(65.698,1) from dual;
 
TRUNC(65.698,1)
---------------
           65.6
 
SQL> select trunc(65.698,-1) from dual;
 
TRUNC(65.698,-1)
----------------
              60
 
SQL> select trunc(65.698,-2) from dual;
 
TRUNC(65.698,-2)
----------------
               0
Nach dem Login kopieren


2、字符函数

字符函数的输入参数为字符类型,其返回值位字符类型或数字类型。字符函数既可以在SQL语句中使用,也可以在PL/SQL块中使用.

 

TRIM 函数的语法如下:

TRIM([ { { LEADING | TRAILING | BOTH }
      [ trim_character ]
   | trim_character
   }
   FROM
    ]
    trim_source
)
Nach dem Login kopieren

下面的这种情况是用于截取特定的字符串

DECLARE 
     v_source  VARCHAR2(20) :='ABCDGHJHAB';
     v_trim    VARCHAR2(20);
BEGIN
	  v_trim:=trim('A' FROM v_source);
	  dbms_output.put_line(v_trim);
END;	 
Nach dem Login kopieren

下面的情况是去除字符串的行首和行尾的空格 ,为了便于理解,用length函数打印trim截取字符串后的长度:

SQL> select length(trim('   hello  ')) from dual;               ----什么都不写,默认情况下截取两端的空格
 
LENGTH(TRIM('HELLO'))
---------------------
                    5

SQL> select length(trim(leading from ' hello')) from dual;      ------leading 截取字符串前面空格
 
LENGTH(TRIM(LEADINGFROM'HELLO'
------------------------------
                             5 
SQL> select length(trim(trailing from ' hello ')) from dual;    ---trailing  截取字符串后面空格 
 
LENGTH(TRIM(TRAILINGFROM'HELLO
------------------------------
                             6
SQL> select length(trim(both from ' hello ')) from dual;         -----both 截取两端的空格
 
LENGTH(TRIM(BOTHFROM'HELLO'))
-----------------------------
                            5
Nach dem Login kopieren

 

ASCII(char):该函数用于返回字符串首字符的ASCII值,示例如下:

SQL> select ascii('a') "a" ,ascii('A') "A"  from dual;
 
         a          A
---------- ----------
        97         65
 
Nach dem Login kopieren

CHR(char) :该函数用于将ASCII码值转变为字符。示例如下:

SQL> select chr('97') from dual;
 
CHR('97')
---------
a
 
SQL> select chr('56') from dual;
 
CHR('56')
---------
8
Nach dem Login kopieren

CONCAT:该函数用于连接字符串,其作用于连接操作符(||)完全相同。示例如下:

SQL> select concat('Good','Morning') from dual;
 
CONCAT('GOOD','MORNING')
------------------------
GoodMorning
SQL> select 'Good'|| 'Morning' from dual;
 
'GOOD'||'MORNING'
-----------------
GoodMorning

Nach dem Login kopieren

 LENGTH(char):该函数用于返回字符串的长度,如果字符串的类型为CHAR,则其长度包括所有的后缀空格:如果char是null,则返回null。示例如下:

SQL> select length('111') from dual;
 
LENGTH('111')
-------------
            3
 
Nach dem Login kopieren

 

3、日期时间函数

日期时间函数用于处理DATE和TIMESTAMP类型的数据。 除了函数,MONTHS_BETWEEN返回数字值外,其它日志函数均返回DATE类型的数据.Oracle是以7位数字格式来存放日期数据的,包括世纪、年、月、日小时、分钟、秒,并且默认时间显示格式为"DD-MON-YY"。下面详细介绍Oracle所提供的日期时间函数,以及在SQL语句和PL/SQL块中使用这些函数的方法。

ADD_MONTHS(d,n):该函数用于返回特定日期时间 d 之后(或之前)的n个月所对应的日期时间(n为正整数表示之后,n为负整数表示之前).示例如下:

SQL> set serveroutput on;
SQL> 
SQL> DECLARE
  2       v_date DATE;
  3  BEGIN
  4        v_date:=add_months(sysdate,-12);
  5        dbms_output.put_line('当前日期前14个月所对应的日期:'||v_date);
  6  END;
  7  
  8  /
 
当前日期前14个月所对应的日期:05-7月 -12
 
PL/SQL procedure successfully completed
 
Nach dem Login kopieren

TRUNC(d,[fmt]) :该函数用于截取日期时间数据.如果fmt指定年度,则结果为本年度的1月1日;如果fmt指定月,则结果为本月1日。示例如下:

----------月
SQL> select trunc(sysdate,'MONTH') from dual;
 
TRUNC(SYSDATE,'MONTH')
----------------------
2013/7/1
 
SQL> select trunc(sysdate,'mm') from dual;
 
TRUNC(SYSDATE,'MM')
-------------------
2013/7/1

----------年
SQL> select trunc(sysdate,'YY') from dual;
 
TRUNC(SYSDATE,'YY')
-------------------
2013/1/1
 
SQL> select trunc(sysdate,'YEAR') from dual;
 
TRUNC(SYSDATE,'YEAR')
---------------------
2013/1/1
Nach dem Login kopieren


MOTNS_BETWEEN(d1,d2):该函数用于返回d1和d2之间相差的月数.如果d1小于d2,则返回负数;如果d1和d2的天数相同,或都是月底,则返回整数;否则Oracle以每月31天为准来计算结果的小数部分。示例如下:

SQL> select months_between(sysdate,'6-7月-1998') from dual;
 
 MONTHS_BETWEEN(SYSDATE,'6-7月-
------------------------------
                           180
Nach dem Login kopieren


NEXT_DAY(d,char):该函数用于返回指定日期后的第一个工作日(由char指定)所对应的日期。示例如下:

SQL> select next_day(sysdate,'星期日') from dual;
 
NEXT_DAY(SYSDATE,'星期日')
--------------------------
2013/7/7 9:15:51

SQL> select next_day(sysdate,'星期一') from dual;
 
NEXT_DAY(SYSDATE,'星期天')
--------------------------
2013/7/8 9:15:11
Nach dem Login kopieren


4、转换函数

 转换函数用于将数值从一种数值类型转换为另一种数据类型。在某些情况下,Oracle Server会隐含地转换数据类型。但在编写应用程序时,为了防止出现编译错误,如果数据类型不同,那么应该使用转换函数进行类型转换.下面详细介绍Oracle所提供的转换函数,以及在SQL语句和PL/SQL块中使用这些转换函数的方法。

TO_CHAR(data[,fmt[,nls_param]]) :该函数用于将日期值转变为字符串,其中fmt用于指定日期格式,nls_param用于指定nls参数。示例如下:

SQL> select to_char(sysdate,'YYYY-MM-DD') from dual;
 
TO_CHAR(SYSDATE,'YYYY-MM-DD')
-----------------------------
2013-07-06
Nach dem Login kopieren

TO_CHAR(n[,fmt[,nls_param]]):用于将数字值转换为VARCHAR2数据类型.示例如下:

SQL> select to_char(100) from dual;
 
TO_CHAR(100)
------------
100
Nach dem Login kopieren


TO_DATE(char[,fmt[,nls_param]]):该函数用于将符合指定日期的函数转变为DATE类型的数值,示例如下:

SQL> select TO_DATE('01-01-2001','DD-MM-YYYY') from dual;
 
TO_DATE('01-01-2001','DD-MM-YY
------------------------------
2001/1/1
 
SQL> select TO_DATE('2001-01-01','YYYY-MM-DD') from dual;
 
TO_DATE('2001-01-01','YYYY-MM-
------------------------------
2001/1/1
Nach dem Login kopieren



 

附录:关于Decode函数

             DECODE是Oracle公司独家提供的功能,它是一个功能很强的函数。它虽然不是SQL的标准,但对于性能非常有用。到目前,其他的数据库供应商还不能提供类似DECODE的功能,甚至有的数据库的供应商批评Oracle的SQL不标准。实际上,这种批评有些片面或不够水平。就象有些马车制造商抱怨亨利。福特的“马车”不标准一样。

 

1、DECODE 中的if-then-else逻辑

在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。

需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

 

2 DECODE 的简单例子

Oracle系统中就有许多数据字典是使用decode 思想设计的,比如记录会话信息的V$SESSION数据字典视图就是这样。我们从《Oracle8i/9i Reference》资料中了解到,当用户登录成功后在V$SESSION中就有该用户的相应记录,但用户所进行的命令操作在该视图中只记录命令的代码(0—没有任何操作,2—Insert…),而不是具体的命令关键字。因此,我们需要了解当前各个用户的名字及他们所进行的操作时,要用下面命令才能得到详细的结果:

select sid,serial#,username,
DECODE(command,
0,’None’,
2,’Insert’,
3,’Select’,
6,’Update’,
7,’Delete’,
8,’Drop’,
‘Other’) cmmand
from v$session where username is not null;
Nach dem Login kopieren

3 DECODE实现表的转置

数据库中的表是由列和行构成的一个二维表。一般列在任何数据库中都是有限的数量,而行的变化较大,如果表很大,行的数量可能大上千万行。同一列的不同行可能有不同的值,而且不是预先定义的。

例:住房公积金报表置换实例:

1.各个单位在本地经办行进行开户,开户就是将单位的基本信息和职工信息的进行登记;

2.每月各个单位的会计到经办行交缴本单位的所有职工的住房公积金,系统记录有每个职工的交缴明细并在每条记录上记录有经办行的代码;

3.每月、季、半年及年终都要求将经办行 变为“列”给出个月的明细报表:

经办行:城西区城东区

月份:

2001.01 xxxx1.xx xxxxx2.xx

2001.02 xxxx3.xx xxxxx4.xx

。 。 。 。 。 。

原来的数据顺序是:

城西区2001.01 xxxxx1.xx

城东区2001.01 xxxxx2.xx

城西区2001.02 xxxxx3.xx

城东区2001.02 xxxxx4.xx

住房公积金系统记录职工的每月交缴名细的pay_lst表结构是:

bank_code varchar2(6)NOT NULL, -- 经办行代码

acc_no varchar2(15) not null, -- 单位代码(单位帐号)

emp_acc_no varchar2(20) not null, -- 职工帐号

tran_date date not null, -- 交缴日期

tran_val Number(7,2) not null, -- 交缴额

sys_date date default sysdate, --系统日期

oper_id varchar2(10) --操作员代码

这样的表结构,一般按照将经办行作为行(row)进行统计是很容易的,但是如果希望将经办行变为列(column)这样的格式来输出就有困难。如果用DECODE函数来处理则变得很简单:

我们创建一个视图来对目前的pay_lst表进行查询。将经办行代码变为一些具体的经办行名称即可:

CREATE OR REPLACE VIEW bank_date_lst AS

Select to_char(tran_date,’yyyy .mm’),

SUM( DECODE ( bank_code,’001’, tran_val,0 )) 城西区,

SUM( DECODE ( bank_code,’002’, tran_val,0 )) 城南区,

SUM( DECODE ( bank_code,’003’, tran_val,0 )) 城东区

FROM pay_lst

GROUP BY to_char(tran_date,’yyyy .mm’);

建立视图后,可直接对该视图进行查询就可按照列显示出结果。

简单应用:

如果字段a值为null,则替换为0

decode(a,Null,0,a) a字段如果为null,则替换为0,如果不为null,则为a[1]

 

 

 

 

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So überprüfen Sie die Tabellenraumgröße von Oracle So überprüfen Sie die Tabellenraumgröße von Oracle Apr 11, 2025 pm 08:15 PM

Um die Oracle -Tablespace -Größe abzufragen, führen Sie die folgenden Schritte aus: Bestimmen Sie den Namen Tablespace, indem Sie die Abfrage ausführen: Wählen Sie Tablespace_Name aus dba_tablespaces. Abfragen Sie die Tablespace -Größe durch Ausführen der Abfrage: Summe (Bytes) als Total_Size, sum (bytes_free) als verfügbare_space, sum

So importieren Sie die Oracle -Datenbank So importieren Sie die Oracle -Datenbank Apr 11, 2025 pm 08:06 PM

Datenimportmethode: 1. Verwenden Sie das SQLLoader -Dienstprogramm: Datendateien vorbereiten, Steuerdateien erstellen und SQLLOADER ausführen. 2. Verwenden Sie das IMP/Exp -Tool: Daten exportieren, Daten importieren. Tipp: 1. Empfohlener SQL*Loader für Big -Data -Sets; 2. Die Zieltabelle sollte vorhanden und die Spaltendefinition entspricht. 3. Nach dem Import muss die Datenintegrität überprüft werden.

Wie man die Oracle -Installation deinstalliert Wie man die Oracle -Installation deinstalliert Apr 11, 2025 pm 08:24 PM

Deinstallieren Sie die Methode für Oracle -Installationsfehler: Schließen Sie den Oracle -Service, löschen Sie Oracle -Programmdateien und Registrierungsschlüssel, Deinstallieren Sie Oracle -Umgebungsvariablen und starten Sie den Computer neu. Wenn das Deinstall fehlschlägt, können Sie das Oracle Universal Deinstall -Tool manuell deinstallieren.

So fügen Sie Oracle Tabellenfelder hinzu So fügen Sie Oracle Tabellenfelder hinzu Apr 11, 2025 pm 07:30 PM

Verwenden Sie die Anweisung für die Änderung der Tabelle, die spezifische Syntax lautet wie folgt: Alter table table_name add column_name data_type [Constraint-Clause]. Wo: table_name der Tabellenname ist, Spalten_Name ist der Feldname, Data_Type ist der Datentyp, und die Einschränkungsklausel ist eine optionale Einschränkung. Beispiel: Änderung der Tabelle Mitarbeiter Fügen Sie der Mitarbeitertabelle eine E -Mail -Varchar2 (100) hinzu.

So verschlüsseln Sie die Oracle -Ansicht So verschlüsseln Sie die Oracle -Ansicht Apr 11, 2025 pm 08:30 PM

Mit der Verschlüsselung von Oracle View können Sie Daten in der Ansicht verschlüsseln und so die Sicherheit sensibler Informationen verbessern. Die Schritte umfassen: 1) Erstellen des Master -Verschlüsselungsschlüssels (MEK); 2) Erstellen einer verschlüsselten Ansicht, der Ansicht und der Verschlüsselung der Ansicht und der MEK angeben; 3) Benutzern Sie die Benutzer, auf die verschlüsselte Ansicht zuzugreifen. Wie verschlüsselte Ansichten funktionieren: Wenn ein Benutzer nach einer verschlüsselten Ansicht nachgefragt wird, verwendet Oracle MEK, um Daten zu entschlüsseln und sicherzustellen, dass nur autorisierte Benutzer auf lesbare Daten zugreifen können.

Wie man Orakel wiedergegeben Wie man Orakel wiedergegeben Apr 11, 2025 pm 07:33 PM

Oracle bietet mehrere Deduplication -Abfragemethoden: Das bestimmte Schlüsselwort gibt für jede Spalte einen eindeutigen Wert zurück. Die Gruppe nach Klausel gruppiert die Ergebnisse und gibt für jede Gruppe einen nicht repetitiven Wert zurück. Das eindeutige Schlüsselwort wird verwendet, um einen Index mit nur eindeutigen Zeilen zu erstellen, und das Abfragen des Index wird automatisch dedupliziert. Die Funktion row_number () weist eindeutige Zahlen und filtert Ergebnisse aus, die nur Zeile 1 enthalten. Die Funktion min () oder max () gibt nicht repetitive Werte einer numerischen Spalte zurück. Der Schnittbetreiber gibt die gemeinsamen Werte der beiden Ergebnissätze zurück (keine Duplikate).

So erstellen Sie eine Tabelle in Oracle So erstellen Sie eine Tabelle in Oracle Apr 11, 2025 pm 08:00 PM

Das Erstellen einer Oracle -Tabelle umfasst die folgenden Schritte: Verwenden Sie die Tabellensyntax erstellen, um Tabellennamen, Spaltennamen, Datentypen, Einschränkungen und Standardwerte anzugeben. Der Tabellenname sollte präzise und beschreibend sein und 30 Zeichen nicht überschreiten. Der Spaltenname sollte beschreibend sein und der Datentyp gibt den in der Spalte gespeicherten Datentyp an. Die Nicht -Null -Einschränkung stellt sicher, dass Nullwerte in der Spalte nicht zulässig sind, und die Standardklausel gibt die Standardwerte für die Spalte an. Primärschlüsseleinschränkungen zur Ermittlung des eindeutigen Datensatzes der Tabelle. Die Einschränkung der Fremdschlüssel gibt an, dass sich die Spalte in der Tabelle auf den Primärschlüssel in einer anderen Tabelle bezieht. Siehe die Erstellung der Schülertabellenstudenten, die Primärschlüssel, eindeutige Einschränkungen und Standardwerte enthält.

Wie man verstümmelte Code in Oracle löst Wie man verstümmelte Code in Oracle löst Apr 11, 2025 pm 10:09 PM

Oracle -verstümmelte Probleme können gelöst werden, indem der Datenbankzeichen gesetzt wird, um sicherzustellen, dass sie mit den Daten übereinstimmen. Legen Sie den Client -Zeichen für die Datenbank fest. Konvertieren Sie Daten oder ändern Sie Spaltenzeichen -Sets so, dass sie Datenbankzeichen -Sets übereinstimmen. Verwenden Sie Unicode -Zeichensätze und vermeiden Sie Multibyte -Zeichensätze. Überprüfen Sie, ob die Spracheinstellungen der Datenbank und des Clients korrekt sind.

See all articles