- 浏览: 8607 次
- 性别:
- 来自: 杭州
最新评论
#####################################
# 常用的字符和字符串处理类函数
#####################################
# LOWER函数
作用:将字符串转换成为小写字母
示例:
select firstname,lastname from customers
where LOWER(lastname) = 'nelson';
# UPPER函数
作用:将字符串转换成为大写字母
示例:
select firstname,lastname from customers
where UPPER(lastname) = 'nelson';
# INITCAP函数
作用:将字符串转换成为混合大小写,每一个单词的开始都是一个大写字母,
其余字符转换成为小写字母。
示例:
select firstname,lastname from customers
where UPPER(lastname) = 'nelson';
select initcap(firstname),initcap(lastname) from customers;
# SUBSTR函数
作用:取子串函数
格式:SUBSTR(C,P,L) 其中:C表示字符串,P表示要提取的起始的字符串的位置,
L表示提取的长度。如果P为负值,表示从字符串的
最后一位倒着向前取。
示例:
select distinct substr(zip,1,3)
from customers;
select distinct substr(zip,1,3),substr(zip,-3,2)
from customers;
# LENGTH函数
作用:确定要分析的字符串的长度
示例:
select destinct length(address)
from customers;
# LPAD函数
作用:用于字符串填充。填充的是字符串左侧的区域。
格式:LPAD(C,L,S) 其中:C表示将要填充的字符串,L表示填充“之后”字符串
的长度,S表示用于填充的符号或者字符
示例:
select firstname,LPAD(firstname,12,' ')
from customers
where firstname like '%E%';
# RPAD函数
作用:用于字符串填充。填充的是字符串右侧的区域。
格式:RPAD(C,L,S) 其中:C表示将要填充的字符串,L表示填充“之后”字符串
的长度,S表示用于填充的符号或者字符
示例:
select firstname,RPAD(firstname,12,' ')
from customers
where firstname like '%E%';
# LTRIM函数
# RTRIM函数
# REPLACE函数
作用:用于字符串的替换
格式:REPLACE(C,S,R) 其中:C表示将处理的字符串,S表示想要查找的字符串,R表示
将要替换的字符串。类似于“查找与替换”功能。
示例:
# CONCAT函数
作用:字符串连接函数 ||
####################################################################
# 数字函数
####################################################################
# ROUND函数
作用:用来将数字字段舍入的指定的精度。
格式:ROUND(N,P)
示例:
select title,retail,ROUND(RETAIL,1),TRUNC(RETAIL,1)
from books;
# TRUNC函数
作用:用来将数字字段截断的指定的精度。
格式:ROUND(N,P)
示例:
select title,retail,ROUND(RETAIL,1),TRUNC(RETAIL,1)
from books;
####################################################################
# 日期函数
####################################################################
# Oracle的日期函数以DD-MON-YY格式显示日期值,这种格式表示两位的天数,三位的月份简写
以及两位的年份。
例如:20-MAR-02
# MONTHS_BETWEEN函数
作用:表示两个月之间相差的天数
示例:
select title,MONTHS_BETWEEN(orderdate,pubdate)
from books NATURAL JOIN orders NATURAL JOIN orderitems
where order# = 1009;
# ADD_MONTHS函数
作用:表示在某个日期之后的时间
示例:
select title,pubdate,ADD_MONTHS(pubdate,60) "Drop Date"
from books
order by "Drop Date";
# NEXT_DAY函数
作用:
格式: NEXT_DAY(d,DAY) 其中:d表示开始日期,DAY表示将要确定的一周中的某一天
示例:
select order#,orderdate,NEXT_DAY(orderdate,7)
from orders
where order# = 1010;
# TO_DATE函数
作用:
示例:
select order#,orderdate,shipdate
from orders
where orderdate = to_date('3-31-2003','MM-DD-YYYY');
##### 日期格式元素的值
MONTH 全部写出的月份名称,添加空格,达到9个字符的总宽度 APRIL
MON 月份名称的三个字母简写 APR
MM 月份的两位数字值 04
RM 罗马数字的月份 IV
D 一周中某一天的数值
DD 一月中某一天的数值
DDD 一年中某一天的数值
DAY 一周中某一天的名称,添加空格,达到9个字符的宽度 Wednesday
DY 一周中某一天的三个字母简写 WED
YYYY 显示4位的年份
YYY、YY、Y 显示年份的最后三位、最后两位或者最后一位
YEAR 全部写出年份
B.C. 或者 A.D.
####################################################################
# NVL函数
####################################################################
作用: 可以使用NVL函数来解决对可能包含NULL值的字段执行数学运算时导致的问题。
在Oracle9i中,NULL值不等于空格或者0。在计算中使用NULL值时,结果是NULL值。
NVL函数使用一个值来代替现有的NULL值。
select order#,orderdate,shipdate,shipdate-orderdate "Delay"
from orders;
在执行上述查询时,有一些列是空白的。请注意!
select order#,orderdate,NVL(shipdate,to_date('07-4-03','DD-MM-YY')),
NVL(shipdate,to_date('07-4-03','DD-MM-YY'))-orderdate "Delay"
from orders
where order# = 1018;
如果shipdate列的值为NULL,就用'07-04-03'替换shipdate的值。
####################################################################
# NVL2函数
####################################################################
作用: NVL2函数是NVL函数的一个变化形式,他允许不同的选项,这取决于是否存在NULL值。
格式: NVL2(x,y,z),其中y表示当x不是NULL时所替换的数据,z表示当x是NULL时所替换的数
据。这使用户在处理NULL值时更加灵活。
例如:NVL2(commission,salary,salary+commission)
表示:如果佣金是NULL,那么工资总额就是工资;如果佣金不是NULL,那么就将工资总额计算为工资加佣金。
select order#,orderdate,NVL2(shipdate,'Shipped','NOT SHIPPED') "Status"
from orders;
####################################################################
# TO_CHAR函数
####################################################################
作用: 用于将日期和数字转换为格式化的字符串。
格式:
select title,to_char(pubdate,'MONTH DD ,YYYY') "Publication Date",
to_char(retail,'$9999.99') "Retail Price"
from books
where isbn = 0401140733;
####################################################################
# DECODE函数
####################################################################
作用:
格式:
DECODE是Oracle公司独家提供的功能,它是一个功能很强的函数。它虽然不是SQL的标准,
但对于性能非常有用。到目前,其他的数据库供应商还不能提供类似DECODE的功能,甚至有的
数据库的供应商批评Oracle的SQL不标准。实际上,这种批评有些片面或不够水平。就象有些马 车制造商抱怨亨利。福特的“马车”不标准一样。
在逻辑编程中,经常用到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 都可以是函数或计算表达式。
DECODE实现表的转置
例子:希望将下面的列结果按照列的方式来显示JOB内容:
SQL> select empno,ename,job,sal,deptno from emp
2 order by deptno,job;
EMPNO ENAME JOB SAL DEPTNO
---------- ---------- --------- ---------- ----------
7934 MILLER CLERK 1300 10
7782 CLARK MANAGER 2450 10
7839 KING PRESIDENT 5000 10
7788 SCOTT ANALYST 3000 20
7369 SMITH CLERK 800 20
7876 ADAMS CLERK 1100 20
7566 JONES MANAGER 2975 20
7938 赵元杰 软件 12345 20
7698 BLAKE MANAGER 2850 30
7499 ALLEN SALESMAN 1600 30
7654 MARTIN SALESMAN 1250 30
7844 TURNER SALESMAN 1500 30
7521 WARD SALESMAN 1250 30
18 rows selected.
再看下面的查询结果:
SQL> select deptno,job,sum(sal) from emp group by deptno,job;
DEPTNO JOB SUM(SAL)
---------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 3000
20 CLERK 1900
20 MANAGER 2975
20 软件 74070
30 MANAGER 2850
30 SALESMAN 5600
9 rows selected.
从上面的结果看,如果希望将JOB置换成列的方式,则只要用DECODE将JOB列进行描述即可。创建的视图如下:
create or replace view empv as
select deptno,
sum( decode(job,'ANALYST', sal,0)) ANALYST,
sum( decode(job,'CLERK', sal,0)) CLERK,
sum( decode(job,'MANAGER', sal,0)) MANAGER,
sum( decode(job,'PRESIDENT', sal,0)) PRESIDENT,
sum( decode(job,'SALESMAN', sal,0)) SALESMAN,
sum( decode(job,'软件', sal,0)) 软件
from emp group by deptno;
具体运行的显示样本如下:
SQL> create or replace view empv as
2 select deptno,
3 sum( decode(job,'ANALYST', sal,0)) ANALYST,
4 sum( decode(job,'CLERK', sal,0)) CLERK,
5 sum( decode(job,'MANAGER', sal,0)) MANAGER,
6 sum( decode(job,'PRESIDENT', sal,0)) PRESIDENT,
7 sum( decode(job,'SALESMAN', sal,0)) SALESMAN,
8 sum( decode(job,'软件', sal,0)) 软件
9 from emp group by deptno;
View created.
SQL> select * from empv;
DEPTNO ANALYST CLERK MANAGER PRESIDENT SALESMAN 软件
---------- ---------- ---------- ---------- ---------- ---------- ----------
10 0 1300 2450 5000 0 0
20 3000 1900 2975 0 0 74070
30 0 0 2850 0 5600 0
####################################################################
# SOUNDEX函数
####################################################################
####################################################################
# NESTING函数
####################################################################
####################################################################
# DUAL表
####################################################################
####################################################################
# SUM函数
####################################################################
select sum(retail-cost) "Total Profit"
from orderitems NATURAL JOIN books
where order# = 1007;
####################################################################
# AVG函数
####################################################################
select avg(retail-cost) "Average Profit"
from books
where category = 'COMPUTER';
select to_char(avg(retail-cost),'999.99') "Average Profit"
from books
where category = 'COMPUTER';
####################################################################
# COUNT函数
####################################################################
select count(distinct category) from books;
select distinct count(category) from books;
select count(*) from orders
where shipdate is null;
select count(shipdate) from orders
where shipdate is null;
在COUNT函数中提供的参数是一个*时,存在的所有记录都会计算在内,通过计算整个记录, Count函数不会丢掉NULL值。
####################################################################
# MAX函数
####################################################################
####################################################################
# MIN函数
####################################################################
####################################################################
# GROUP BY子句
####################################################################
select category,to_char(avg(retail-cost),'999.99') Profit
from books
group by category
select customer#,order#,sum(quantity*retail) "Order Total"
from orders NATURAL JOIN orderitems NATURAL JOIN books
group by customer#,order#
####################################################################
# HAVING子句
####################################################################
select category,to_char(avg(retail-cost),'999.99') Profit
from books
group by category
having avg(retail-cost)>15;
select category,to_char(avg(retail-cost),'999.99') Profit
from books
where pubdate>to_date('01-01-02','DD-MM-YY')
group by category
having avg(retail-cost)>15;
按照订单进行分组统计,但是只显示总金额超过100美元的订单。
select customer#,order#,sum(quantity*retail) "Order Total"
from orders NATURAL JOIN orderitems NATURAL JOIN books
group by customer#,order#
having sum(quantity*retail)>100;
####################################################################
# STDDEV函数
####################################################################
作用:
计算指定字段的标准差。“标准差”计算用来确定一组数字中的单个值与平均值的接近 程度。
示例:
select category,avg(retail-cost),stddev(retail-cost)
from books
group by category;
要想解释标准差计算的数值,必须将它与每一个种类的“平均利润”作比较。例如:查 看上述结果中Cooking种类,图书的平均利润是8.60美元。但是大多数图书都接近这个 平均值,还是大多数图书都之产生1美元的利润,而一本书产生了20美元的利润?
标准差就是有多少本书位于平均值附近的某个范围之内的统计近似值。
####################################################################
# VARIANCE函数
####################################################################
作用: 用来确定数据在一个组中的分散程度。一组记录的方差是根据指定字段的最大值
和最小值计算的。
如果数据值很密集,那么方差就很小;但是如果数据包含极端的值(很大或者很小)
那么方差就很大。
示例:
select category,variance(retail-cost),min(retail-cost),max(retail-cost)
from books
group by category;
对结果的解释:
上述查询结果列出了BOOKS表中所有图书的种类、每一个种类的利润方差以及每个种类
中的最小利润和最大利润(为了进行比较)。与标准差一样,如果一组数据只包含一个 值,那么计算得到的方差是0。但是与标准差不同,方差不是用与源数据相同的单位计 算的。
要想解释VARRANCE函数的结果,必须查看这个值有多大或者多小。例如:Cooking种类 具有比其他种类更小的方差。这意味着Cooking种类中的图书利润更密集(也就是说, 利润没有覆盖更大的范围)。
看一下Cooking种类中的图书的最小利润和最大利润,注意,利润范围是2.30美元,
(9.75.7.45)。另一方面,我们看看Family Life种类。这个种类具有最高方差,如果 比较最小利润和最大利润,那么他的利润范围很大。
这就警告管理人员,一些书可能产生很小的利润。而其他一些可以产生很大的利润,可 以知道企业的经营数据。
PS:转自百度空间,方便自己看,呵
相关推荐
下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 Oracle Sql 提供了两个大小写转换函数:UPPER() 和 LOWER()。UPPER() 函数将字符串转换为大写,而 LOWER() 函数将字符串转换为小写。 示例:...
通过这些函数和技巧,我们可以高效地处理各种字符串拆分任务,无论是在简单的数据处理还是在复杂的业务逻辑中。对于更多复杂的需求,建议参考Oracle的官方文档和相关的技术博客,以获取最新的功能和最佳实践。
### Oracle常用字符串处理函数 在Oracle数据库中,字符串处理函数是非常重要的工具,它们可以帮助我们高效地管理和操作数据。本文将详细介绍几种常用的字符串处理函数及其应用方法。 #### 1. LTRIM 和 RTRIM ...
传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考
### Oracle字符串处理函数详解 #### 1. ASCII ASCII函数用于返回给定字符的ASCII码值。例如: ``` SQL> select ascii('A') A, ascii('a') a, ascii('0') zero, ascii(' ') space from dual; AAZERO SPACE ------...
Oracle常用的字符和字符串处理函数[整理].pdf
本文将深入探讨Oracle中的常用字符串操作函数,帮助你更好地理解和运用这些功能。 1. **LENGTH()** 函数: 这个函数用于返回字符串的长度,不包括结束的空字符。例如,`LENGTH('Hello')` 将返回5。 2. **SUBSTR()...
ORACLE 字符串函数是一组用于操作和处理字符串的函数,包括连接、截取、转换、查找、替换、去除空白等操作。 1. 字符串连接函数:`string || string` 该函数用于连接两个字符串,结果是一个新的字符串。例如,`'...
根据提供的文件信息,我们可以归纳总结出Oracle数据库中与字符和字符串处理相关的常用函数知识点: ### 一、字符串转换函数 #### LOWER 函数 - **功能**:将输入字符串中的所有字母转换为小写。 - **语法**:`...
Oracle字符相似度函数是Oracle数据库系统提供的一种功能,用于评估两个字符串之间的相似性。这个功能在数据清洗、信息检索、文本分析等领域具有广泛的应用。在SQL查询中,我们可以直接使用这些函数来比较不同字符串...
Oracle数据库中的字符函数是SQL和PL/SQL编程中不可或缺的一部分,它们主要用于处理和操作文本数据。以下是对给定文件中提到的一些主要字符函数的详细解释: 1. ASCII(n) 函数: - 该函数返回字符串的第一个字符的...
这里我们详细探讨了多个与字符串相关的函数,它们在处理和操作文本数据时非常有用。 1. **SUBSTR** 函数:这个函数用于从字符串中提取子串。基本语法是 `substr(string, start_position, length)`。例如,`substr('...
在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或...理解并熟练运用这些函数可以帮助我们在处理含有数字的字符串时,更好地进行数据分析和排序操作。
Oracle拆分字符串函数
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100... * Oracle11g Release2版本引入了LISTAGG 函数,使得聚集连接字符串变得很容易。并且允许使用我们指定连接串中的字段顺序
总的来说,Oracle的JSON处理能力强大且灵活,不仅能够满足基本的字符串操作,还能支持复杂的数据查询和转换,使得在关系型数据库中存储和处理JSON数据变得轻松易行。通过学习和实践这些功能,开发者可以更好地适应...
### Oracle 分隔字符串函数知识点详解 #### 一、Oracle 分隔字符串函数介绍 在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助...
通过上述示例可以看出,在Oracle中利用`REGEXP_SUBSTR`函数可以非常灵活地处理字符串,尤其是对于包含特殊符号(如逗号、冒号等)的字符串,能够轻松地提取所需的子字符串。这对于数据处理、报表生成等应用场景具有...