Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2737143
  • 博文数量: 423
  • 博客积分: 7770
  • 博客等级: 少将
  • 技术积分: 4766
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 11:58
个人简介

Oracle/DB2/Postgresql/Mysql/Hadoop/Greenplum/Postgres-xl/Mongodb

文章分类

全部博文(423)

文章存档

2019年(3)

2018年(6)

2017年(27)

2016年(23)

2015年(30)

2014年(16)

2013年(31)

2012年(73)

2011年(45)

2010年(14)

2009年(30)

2008年(30)

2007年(63)

2006年(32)

分类: Oracle

2008-05-20 18:44:33


                                       SQL函数
一个函数可以有多个参数:
在Oracle数据库允许函数没参数:
在ORACEL中函数可以分有二类,
1.单行函数(一个行返回一个结果值,) 比较常见,像字符串函数,日期函数,转换函数,
2.多行函数(多个行返回一个结果值) 如,求平均,统计,求和这样的函数就是 多行函数,,他们都是多个行中,经过运算得到一个结果

1单行函数: Character,Conversion,Number,Date,General
字符函数[转换函数,(LOVER,(将所有的大写转换化小写)UPPER,(将有小写转换成大写)(INITCAP(将一个单词的首字转换成大写))字符操纵函数(c)}

例子,,

SQL> select lower(ename) from emp;
LOWER(ENAM
----------
smith
allen
ward
jones
martin
blake
clark
scott
king
turner
adams
LOWER(ENAM
----------
james
ford
miller
已选择14行。
大写转成小写,,
字符在ORACLE中都自动存储为大写,
SQL>
自动换转成大写字母的函数upper
SQL> select *from emp where ename=upper('king');
    EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
--------- ---------- --------- ---------- ---------- ---------- ----------
   DEPTNO
---------
     7839 KING       PRESIDENT            17-11月-81       5000
       10

SQL>
------------------------------------
单词的首字母为大写:函数initcap
SQL> select initcap(ename) from emp;
INITCAP(EN
----------
Smith
Allen
Ward
Jones
Martin
Blake
Clark
Scott
King
Turner
Adams
INITCAP(EN
----------
James
Ford
Miller
已选择14行。

-------
字符串连接函数,concat();

SQL> select concat(ename,job) from emp;
CONCAT(ENAME,JOB)
-------------------
SMITHCLERK
ALLENSALESMAN
WARDSALESMAN
JONESMANAGER
MARTINSALESMAN
BLAKEMANAGER
CLARKMANAGER
SCOTTANALYST
KINGPRESIDENT
TURNERSALESMAN
ADAMSCLERK
CONCAT(ENAME,JOB)
-------------------
JAMESCLERK
FORDANALYST
MILLERCLERK
已选择14行。
SQL>

同字符串连接符(||)的作用是一样的,
 
SQL> select ename || job from emp;
ENAME||JOB
-------------------
SMITHCLERK
ALLENSALESMAN
WARDSALESMAN
JONESMANAGER
MARTINSALESMAN
BLAKEMANAGER
CLARKMANAGER
SCOTTANALYST
KINGPRESIDENT
TURNERSALESMAN
ADAMSCLERK
ENAME||JOB
-------------------
JAMESCLERK
FORDANALYST
MILLERCLERK
已选择14行。
SQL>
取字符串函数substr();
SQL> select substr(ename,1,4) from emp;
SUBSTR(E
--------
SMIT
ALLE
WARD
JONE
MART
BLAK
CLAR
SCOT
KING
TURN
ADAM
SUBSTR(E
--------
JAME
FORD
MILL
已选择14行。
 
选择字符串的长度 函数 length();
已选择14行。
SQL> select length(ename) from emp;
LENGTH(ENAME)
-------------
            5
            5
            4
            5
            6
            5
            5
            5
            4
            6
            5
            5
            4
            6
已选择14行。
SQL>
取得某个字符所在的位置, instr();

SQL> select instr(ename,'S') from emp;
INSTR(ENAME,'S')
----------------
               1
               0
               0
               5
               0
               0
               0
               1
               0
               0
               5
               5
               0
               0
已选择14行。
SQL>
SQL> select ename, instr(ename,'S') from emp;
ENAME      INSTR(ENAME,'S')
---------- ----------------
SMITH                     1
ALLEN                     0
WARD                      0
JONES                     5
MARTIN                    0
BLAKE                     0
CLARK                     0
SCOTT                     1
KING                      0
TURNER                    0
ADAMS                     5
JAMES                     5
FORD                      0
MILLER                    0
已选择14行。
SQL>
 
 
 

字符串占位符使用函数 lpad();

SQL> select lpad(ename,10,'*') from emp;
LPAD(ENAME,10,'*')
--------------------
*****SMITH
*****ALLEN
******WARD
*****JONES
****MARTIN
*****BLAKE
*****CLARK
*****SCOTT
******KING
****TURNER
*****ADAMS
*****JAMES
******FORD
****MILLER
已选择14行。
 
查看表结构: desc +表名
 
阅读(1770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~