常用系统函数介绍

51、bfilename(dir,file)

指定一个外部二进制文件;

SQL>insert into 表名 values(bfilename('文件路径','文件名'));

52、convert('x','desc','source')

将x字段或变量的源source转换为desc

SQL> select sid,serial#,username,decode(command,

  2  0,'none',

  3  2,'insert',

  4  3,

  5  'select',

  6  6,'update',

  7  7,'delete',

  8  8,'drop',

  9  'other') cmd  from v$session where type!='background';

      SID   SERIAL# USERNAME                       CMD

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

        1         1                                none

        2         1                                none

        3         1                                none

        4         1                                none

        5         1                                none

        6         1                                none

        7      1275                                none

        8      1275                                none

        9        20 GAO                            select

       10        40 GAO                            none

52-1、decode函数类似于java的switch case分支语句

SQL>select ename||decode(deptno,10,'在10号部门',20,'在20号部门',30,'在30号部门') from emp where ename='SCOTT' order by deptno;

ENAME||DECODE(DEPTNO,10,'在10?

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

SCOTT在20号部门

53、dump(s,fmt,start,length)

dump函数以fmt指定的内部数字格式返回一个varchar2类型的值;(主要用于查看类型格式长度)

SQL>select dump(ename) from emp where ename='SCOTT';

DUMP(ENAME)

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

Typ=1 Len=5: 83,67,79,84,84

54、empty_blob()和empty_clob()

这两个函数都是用来对大数据类型字段进行初始化操作的函数

55、greatest

返回一组表达式中的最大值,即比较字符的编码大小;

SQL>select greatest('AA','AB','AC') from dual;

GREATEST('AA','AB','AC')

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

AC

56、least

返回一组表达式中最小值;

SQL>select least('AA','AB','AC') from dual;

LEAST('AA','AB','AC')

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

AA

57、uid

返回标识当前用户的唯一整数;(可以看到使用操作oracle用户的唯一uid编号)

SQL>select uid from dual;

       UID

----------

        84

58、user

返回当前用户的名字

SQL>select user from dual;等同于SQL>show user;

USER

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

SCOTT

59、userenv

返回当前用户环境的信息,opt可以是:

ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZEISDBA

查看当前用户是否是DBA如果是则返回true

SQL>select userenv('isdba') from dual;

USERENV('ISDBA')

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

FALSE

SQL> select userenv('isdba') from dual;

USEREN

------

TRUE

SESSION

返回会话标志

SQL> select userenv('sessionid') from dual;

USERENV('SESSIONID')

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

                 152

ENTRYID

返回会话人口标志

SQL> select userenv('entryid') from dual;

USERENV('ENTRYID')

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

                 0

INSTANCE

返回当前INSTANCE的标志

SQL> select userenv('instance') from dual;

USERENV('INSTANCE')

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

                  1

LANGUAGE

返回当前环境变量

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')

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

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

LANG

返回当前环境的语言的缩写

SQL> select userenv('lang') from dual;

USERENV('LANG')

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

ZHS

TERMINAL

返回用户的终端或机器的标志

SQL> select userenv('terminal') from dual;

USERENV('TERMINA

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

GAO

VSIZE(X)

返回X的大小(字节)数

SQL> select vsize(user),user from dual;

VSIZE(USER) USER

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

          6 SYSTEM

60、avg(distinct|all)

all表示对所有的值求平均值,distinct只对不同的值求平均值

SQL>select avg(distinct sal) from emp;

AVG(DISTINCTSAL)

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

2064.58333333333

SQL> select avg(all sal) from emp;

AVG(ALLSAL)

-----------

2073.214285

61、max(distinct|all)

求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次

SQL>select max(distinct sal) from emp;

MAX(DISTINCTSAL)

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

            5000

62、min(distinct|all)

求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次

SQL>select min(all sal) from emp;

MIN(ALLSAL)

-----------

        800

63、stddev(distinct|all)

求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差

SQL>select stddev(sal) from scott.emp;

STDDEV(SAL)

-----------

  1182.5032

SQL>select stddev(distinct sal) from emp;

STDDEV(DISTINCTSAL)

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

           1229.951

64、variance(distinct|all)

求协方差

SQL>select variance(sal) from emp;

VARIANCE(SAL)

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

    1398313.9

65、group by

主要用来对一组数进行统计

SQL> select deptno,count(*),sum(sal) from emp group by deptno;

DEPTNO   COUNT(*)   SUM(SAL)

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

    30          6       9400

    20          5      10875

    10          3       8750

66、having

对分组统计再加限制条件

SQL> select deptno,count(*),sum(sal) from emp group by deptno having count(*)>=5;

DEPTNO   COUNT(*)   SUM(SAL)

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

    30          6       9400

20          5      10875

SQL> select deptno,count(*),sum(sal) from emp having count(*)>=5 group by deptno;

DEPTNO   COUNT(*)   SUM(SAL)

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

    30          6       9400

    20          5      10875

67、order by

用于对查询到的结果进行排序输出(升序排序asc,降序排序desc)

SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

DEPTNO ENAME            SAL

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

    10 KING         5000.00

    10 CLARK        2450.00

    10 MILLER       1300.00

    20 SCOTT        3000.00

    20 FORD         3000.00

    20 JONES        2975.00

    20 ADAMS        1100.00

    20 SMITH         800.00

    30 BLAKE        2850.00

    30 ALLEN        1600.00

    30 TURNER       1500.00

    30 MARTIN       1250.00

    30 WARD         1250.00

30 JAMES         950.00

sql函数的使用--系统函数

sys_context

1、terminal:当前会话客户所对应的终端标识符;

2、lanuage:语言;

3、db_name:当前数据库名称;

4、nls_date_format:当前会话客户所对应的日期格式;

5、session_user:当前会话客户所对应的数据库用户名;

6、current_schema:当前会话客户所对应的默认方案名;

7、host:返回数据库所在主机的名称;

通过该函数,可以查询一些重要信息,比如你正在使用哪个数据库?

select sys_context('userenv','db_name') "数据库名称",sys_context('userenv','language') "语言" from dual;

数据库名称                   语言

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

orcl                         SIMPLIFIED CHINESE_CHINA.ZHS16GBK

原文地址:https://www.cnblogs.com/roger112/p/7717509.html