您的位置:首页 > 数据库 > Oracle

oracle操作记录-字符串和数值函数

2013-10-14 11:13 393 查看

单行函数操作: 函数的参数是一个表达式或者字段名

===================字符串函数操作========================

1.

SQL> select upper('smith') from dual ;

UPPER

-----

SMITH

2. 使用upper()函数,将字符变为大写

SQL> select * from emp where ename = upper('Smith') ;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

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

      7369 SMITH      CLERK           7902 17-12月-80            800                    20

     

3. 使用lower函数

SQL> select lower('HELLO WORLD') from dual ;

LOWER('HELL

-----------

hello world

4. 第一个单词变成大写

SQL> select initcap('hello world') from dual ;

INITCAP('HE

-----------

Hello World

5. 将查询结果的首字母为大写

SQL> select initcap(ename) from emp ;

INITCAP(EN

----------

Beyond

Jacky

Smith

Allen

Ward

Jones

Martin

Blake

Clark

Scott

King

Turner

Adams

James

Ford

Miller

已选择16行。

6. 字符串连接函数 (和 || 作用相同)

SQL> select concat('hello','world') from dual ;

CONCAT(HE

----------

helloworld

7. 使用substr, length, replace函数,分别用于返回子字符串,程度,替换字符

  substr()函数的开始截取点, 从0和从1中开始效果是一样的 ! oracle比较智能,一般程序是从0开始

SQL> select substr('hello',1,3), length('hello'), replace('hello','ll','xx') from dual ;

SUB LENGTH('HELLO') REPLA

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

hel               5 hexxo

8. 取姓名的后四位

SQL> select substr(ename,length(ename)-3,4) from emp ;

SUBSTR(E

--------

yond

acky

MITH

LLEN

WARD

ONES

RTIN

LAKE

LARK

COTT

KING

RNER

DAMS

AMES

FORD

LLER

9. 取姓名的后3位

SQL> select ename, substr(ename,length(ename)-2) from emp ;

ENAME      SUBSTR(ENAME,LENGTH(

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

beyond     ond

Jacky      cky

SMITH      ITH

ALLEN      LEN

WARD       ARD

JONES      NES

MARTIN     TIN

BLAKE      AKE

CLARK      ARK

SCOTT      OTT

KING       ING

TURNER     NER

ADAMS      AMS

JAMES      MES

FORD       ORD

MILLER     LER

已选择16行。

 

10. 也可以这样写比较方便, 从-3的位置, 取3位 (倒序)

SQL> select ename , substr(ename,-3,3) from emp ;

ENAME      SUBSTR

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

beyond     ond

Jacky      cky

SMITH      ITH

ALLEN      LEN

WARD       ARD

JONES      NES

MARTIN     TIN

BLAKE      AKE

CLARK      ARK

SCOTT      OTT

KING       ING

TURNER     NER

ADAMS      AMS

JAMES      MES

 

=============================数值函数================================

1. round() 四舍五入

SQL> select round(760.539) from dual ;

ROUND(760.539)

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

           761

          

          

2. 保留两位小数

SQL> select round(760.536,2) from dual ;

ROUND(760.536,2)

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

          760.54

     

         

3. 参数-2 表示从整数的个位数开始四舍五入

SQL> select round(782.376,-2) from dual ;

ROUND(782.376,-2)

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

              800

      

             

4. trunc()函数不保留任何小数, 也不进行四舍五入

SQL> select trunc(782.678) from dual ;

TRUNC(782.678)

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

           782

 

5. 通过trunc()函数查询Jacky的工资, 去掉小数位

SQL> set linesize 300 ;

SQL> select * from emp ;

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO

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

      2010 Jacky                SalesMan                 8001 01-3月 -93        3000.67      20.86         10

      7369 SMITH                CLERK                    7902 17-12月-80            800                    20

      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30

      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20

      7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30

      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30

      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10

      7788 SCOTT                ANALYST                  7566 19-4月 -87           3000                    20

      7839 KING                 PRESIDENT                     17-11月-81           5000                    10

      7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30

      7876 ADAMS                CLERK                    7788 23-5月 -87           1100                    20

      7900 JAMES                CLERK                    7698 03-12月-81            950                    30

      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20

      7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10

已选择15行。

SQL> select trunc(sal) from emp where ename = 'Jacky' ;

6. 保留两位小数,但不四舍五入

SQL> select trunc(782.368,2) from dual ;

TRUNC(782.368,2)

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

          782.36

      

         

7. 参数为-2, 从个位开始,但不四舍五入为800

SQL> select trunc(782.368,-2) from dual ;

TRUNC(782.368,-2)

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

              700

 

             

8. mod()函数
4000
用于取余数

SQL> select mod(10,3) from dual ;

 MOD(10,3)

----------

         1

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据库编程