oracle中的一些常用函数及示例_oracle_脚本之家

by admin on 2019年11月26日

Oracle TRIM函数是很常见的函数,下面对Oracle
TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle
TRIM函数有更深的认识。

Oracle的Nvl函数

含义解释:

正在看的ORACLE教程是:oracle 函数。PL/SQL单行函数和组函数详解
函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:
单行函数 组函数 本文将讨论如何利用单行函数以及使用规则。 SQL中的单行函数
SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDERBY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。
SELECTename,TO_CHAR(hiredate,’day,DD-Mon-YYYY’)FROMempWhereUPPERLike’AL%’ORDERBYSOUNDEX
单行函数也可以在其他语句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数,所以我们的注意力也集中在SELECT语句中。
NULL和单行函数
在如何理解NULL上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为提个NULL值,这个规则也适合很多函数,只有CONCAT,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的,因为他能直接处理NULL值,NVL有两个参数:NVL,x1和x2都式表达式,当x1为null时返回X2,否则返回x1。
下面我们看看emp数据表它包含了薪水、奖金两项,需要计算总的补偿
columnnameemp_idsalarybonuskeytypepknulls/uniquenn,unnfktabledatatypenumbernumbernumberlength11.211.2
不是简单的将薪水和奖金加起来就可以了,如果某一行是null值那么结果就将是null,比如下面的例子:
updateempsetsalary=*1.1
这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即salary+null,那么就会得出错误的结论,这个时候就要使用nvl函数来排除null值的影响。
所以正确的语句是: updateempsetsalary=*1.1 单行字符串函数
单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串
ASCII()
c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHRBIG_A,ASCIIBIG_zFROMempBIG_ABIG_z65122
CHR[NCHAR_CS] i是一个数字,函数返回十进制表示的字符
selectCHRFROMempCHR65CHR122CHR223AzB CONCAT
c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2.如果c2为null,则返回c1,如果c1、c2都为null,则返回null。他和操作符||返回的结果相同
selectconcatusernamefromdualusernamesloboSyoboda INITCAP()
c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号限制。
selectINITCAPCeasarfromdualCeasarVeni,Vedi,Vici INSTR
c1,c2均为字符串,i,j为整数。函数返回c2在c1中第j次出现的位置,搜索从c1的第i个字符开始。当没有发现需要的字符时返回0,如果i为负数,那么搜索将从右到左进行,但是位置的计算还是从左到右,i和j的缺省值为1.
selectINSTR(‘Mississippi’,’i’,3,3)fromdualINSTR(‘MISSISSIPPI’,’I’,3,3)11selectINSTR(‘Mississippi’,’i’,-2,3)fromdualINSTR(‘MISSISSIPPI’,’I’,3,3)2
INSTRB函数一样,只是他返回的是字节,对于单字节INSTRB
c1为字符串,返回c1的长度,如果c1为null,那么将返回null值。
selectLENGTHergofromdualergo10 LENGTHb一样,返回字节。 lower()
返回c的小写字符,经常出现在where子串中
selectLOWERfromitemdetailWHERELOWERLIKE’%white%’COLORNAMEWinterwhite
LPAD
c1,c2均为字符串,i为整数。在c1的左侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,参见RPAD。
selectLPADpadded,answerunpaddedfromquestion;PADDEDUNPADDEDYesYesNONOMaybemaybe
LTRIM
把c1中最左边的字符去掉,使其第一个字符不在c2中,如果没有c2,那么c1就不会改变。
selectLTRIMfromdualLTRppi RPAD
在c1的右侧用c2字符串补足致长度i,可多次重复,如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。c2的缺省值为单空格,其他与LPAD相似
RTRIM
把c1中最右边的字符去掉,使其第后一个字符不在c2中,如果没有c2,那么c1就不会改变。
REPLACE c1,c2,c3都是字符串,函数用c3代替出现在c1中的c2后返回。
selectREPLACEfromdualREPLACEdowntown STBSTR
c1为一字符串,i,j为整数,从c1的第i位开始返回长度为j的子字符串,如果j为空,则直到串的尾部。
selectSUBSTRfromdualSUBSMess SUBSTRB
与SUBSTR大致相同,只是I,J是以字节计算。 SOUNDEX() 返回与c1发音相似的词

前言

如果提到Oracle
TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种。然而Oracle
TRIM函数其实是具有删除“任意指定”字符的功能,不可谓不牛。我们来一次体验之旅。

从两个表达式返回一个非null 值。

decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

[1][2][3][4]威尼斯人棋牌官网,下一页

学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函数及示例,一是为了和大家分享,二是可以在以后工作中忘记了随时查阅。废话不多说,下面直接上函数。

1.先看一下Oracle TRIM函数的完整语法描述

NVL(eExpression1, eExpression2)参数

该函数的含义如下:IF 条件=值1 THEN RETURNELSIF 条件=值2 THEN RETURN
……ELSIF 条件=值n THEN RETURNEND IF

正在看的ORACLE教程是:oracle
函数。selectSOUNDEXDawesSOUNDEXDaws,SOUNDEXfromdualDawesDawsDawsonD200D200D250
TRANSLATE 将c1中与c2相同的字符以c3代替
selectTRANSLATEtestfromdualTEXTramble TRIM
将c3串中的第一个,最后一个,或者都删除。
selectTRIMtrimfromdualTRIMspacepadded UPPER()
返回c1的大写,常出现where子串中
selectnamefromdualwhereUPPERLIKE’KI%’NAMEKING 单行数字函数
单行数字函数操作数字数据,执行数学和算术运算。所有函数都有数字参数并返回数字值。所有三角函数的操作数和值都是弧度而不是角度,oracle没有提供内建的弧度和角度的转换函数。
ABS 反余玄函数,返回-1到1之间的数。n表示弧度
selectACOSZEROFROMdualPIZERO3.141592650 ASIN()
反正玄函数,返回-1到1,n表示弧度 ATAN()
反正切函数,返回n的反正切值,n表示弧度。 CEIL()
返回大于或等于n的最小整数。 COS 返回n的双曲余玄值,n为数字。
selectCOSHFROMdualCOSH 返回e的n次幂,e=2.71828183. FLOOR
返回N的自然对数,N必须大于0 LOG 返回n1除以n2的余数, POWER
返回舍入小数点右边n2位的n1的值,n2的缺省值为0,这回将小数点最接近的整数,如果n2为负数就舍入到小数点左边相应的位上,n2必须是整数。
selectROUND,ROUNDFROMdualROUNDROUND1230012345.54 SIGN()
如果n为负数,返回-1,如果n为正数,返回1,如果n=0返回0. SIN()
返回n的正玄值,n为弧度。 SINH() 返回n的双曲正玄值,n为弧度。 SQRT
返回n的正切值,n为弧度 TANH() 返回n的双曲正切值,n为弧度 [NextPage]
TRUNC
返回截尾到n2位小数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在小数点左边相应的位上。
单行日期函数
单行日期函数操作DATA数据类型,绝大多数都有DATA数据类型的参数,绝大多数返回的也是DATA数据类型的值。
ADD_MONTHS
返回日期d加上i个月后的结果。i可以使任意整数。如果i是一个小数,那么数据库将隐式的他转换成整数,将会截去小数点后面的部分。
LAST_DAY() 函数返回包含日期d的月份的最后一天 MONTHS_BETWEEN
返回d1和d2之间月的数目,如果d1和d2的日的日期都相同,或者都使该月的最后一天,那么将返回一个整数,否则会返回的结果将包含一个分数。
NEW_TIME
d1是一个日期数据类型,当时区tz1中的日期和时间是d时,返回时区tz2中的日期和时间。tz1和tz2时字符串。
NEXT_DAY
返回日期d后由dow给出的条件的第一天,dow使用当前会话中给出的语言指定了一周中的某一天,返回的时间分量与d的时间分量相同。
selectNEXT_DAY(’01-Jan-2000′,’Monday’)”1stMonday”,NEXT_DAY(’01-Nov-2004′,’Tuesday’)+7″2ndTuesday”)fromdual;1stMonday2ndTuesday03-Jan-200009-Nov-2004
ROUND 将日期d按照fmt指定的格式舍入,fmt为字符串。 SYADATE
函数没有参数,返回当前日期和时间。 TRUNC 返回由fmt指定的单位的日期d.
单行转换函数 单行转换函数用于操作多数据类型,在数据类型之间进行转换。
CHARTORWID() c使一个字符串,函数将c转换为RWID数据类型。
SELECTtest_idfromtest_casewhererowid=CHARTORWID CONVERT
c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。
HEXTORAW() x为16进制的字符串,函数将16进制的x转换为RAW数据类型。
RAWTOHEX() x是RAW数据类型字符串,函数将RAW数据类转换为16进制的数据类型。
ROWIDTOCHAR() 函数将ROWID数据类型转换为CHAR数据类型。 TO_CHAR
x是一个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,如果x为日期nlsparm=NLS_DATE_LANGUAGE控制返回的月份和日份所使用的语言。如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS=”dg”,NLS_CURRENCY=”string” TO_DATE
c表示字符串,fmt表示一种特殊格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。
TO_MULTI_BYTE() c表示一个字符串,函数将c的担子截字符转换成多字节字符。
TO_NUMBER
c表示字符串,fmt表示一个特殊格式的字符串,函数返回值按照fmt指定的格式显示。nlsparm表示语言,函数将返回c代表的数字。
TO_SINGLE_BYTE()
将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字

一.单行函数

TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]|
trim_character}FROM]trim_source)

eExpression1, eExpression2

decode

上一页[1][2][3][4]下一页

只处理单个行,并且为每行返回一个结果。

以上语法引自于Oracle 10gR2官方文档: …
0/img_text/trim.htm单从这个语法定义上我们就可以看出,小小的Oracle
TRIM函数蕴含了更多可定制的功能。一一展示,供参考。

如 果 eExpression1 的计算结果为 null 值,则 NVL 返回 eExpression2。如果
eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1
和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与
eExpression2 的结果皆为 null 值,则 NVL 返回 .NULL.。

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

正在看的ORACLE教程是:oracle 函数。节和多字节字符时才使用 其它单行函数
BFILENAME
dir是一个directory类型的对象,file为一文件名。函数返回一个空的BFILE位置值指示符,函数用于初始化BFILE变量或者是BFILE列。
DECODE
x是一个表达式,m1是一个匹配表达式,x与m1比较,如果m1等于x,那么返回r1,否则,x与m2比较,依次类推m3,m4,m5….直到有返回结果。
DUMP
x是一个表达式或字符,fmt表示8进制、10进制、16进制、或则单字符。函数返回包含了有关x的内部表示信息的VARCHAR2类型的值。如果指定了n1,n2那么从n1开始的长度为n2的字节将被返回。
EMPTY_BLOB()
该函数没有参数,函数返回一个空的BLOB位置指示符。函数用于初始化一个BLOB变量或BLOB列。
EMPTY_CLOB()
该函数没有参数,函数返回一个空的CLOB位置指示符。函数用于初始化一个CLOB变量或CLOB列。
GREATEST()
exp_list是一列表达式,返回其中最大的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,那么返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。
LEAST()
exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。
UID 该函数没有参数,返回唯一标示当前数据库用户的整数。 USER
返回当前用户的用户名 USERENV()
基于opt返回包含当前会话信息。opt的可选值为: ISDBA
会话中SYSDBA脚色响应,返回TRUE SESSIONID 返回审计会话标示符 ENTRYID
返回可用的审计项标示符 INSTANCE
在会话连接后,返回实例标示符。该值只用于运行Parallel服务器并且有多个实例的情况下使用。
LANGUAGE 返回语言、地域、数据库设置的字符集。 LANG
返回语言名称的ISO缩写。 TERMINAL
为当前会话使用的终端或计算机返回操作系统的标示符。 VSIZE()
x是一个表达式。返回x内部表示的字节数。 SQL中的组函数
组函数也叫集合函数,返回基于多个行的单一结果,行的准确数量无法确定,除非查询被执行并且所有的结果都被包含在内。与单行函数不同的是,在解析时所有的行都是已知的。由于这种差别使组函数与单行函数有在要求和行为上有微小的差异.
组函数
与单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数可以在select或select的having子句中使用,当用于select子串时常常都和GROUPBY一起使用。
AVG 返回数值的平均值。缺省设置为ALL.
SELECTAVG,AVGFROMscott.empAVGAVG1877.941181877.941181916.071413 COUNT
返回查询中行的数目,缺省设置是ALL,*表示返回所有的行。 MAX
返回选择列表项目的最大值,如果x是字符串数据类型,他返回一个VARCHAR2数据类型,如果X是一个DATA数据类型,返回一个日期,如果X是numeric数据类型,返回一个数字。注意distinct和all不起作用,应为最大值与这两种设置是相同的。
MIN 返回选择列表项目的最小值。 STDDEV
返回选者的列表项目的标准差,所谓标准差是方差的平方根。 SUM
返回选择列表项目的数值的总和。 VARIANCE 返回选择列表项目的统计方差。
用GROUPBY给数据分组
正如题目暗示的那样组函数就是操作那些已经分好组的数据,我们告诉数据库用GROUPBY怎样给数据分组或者分类,当我们在SELECT语句的SELECT子句中使用组函数时,我们必须把为分组或非常数列放置在GROUPBY子句中,如果没有用groupby进行专门处理,那么缺省的分类是将整个结果设为一类。
selectstat,counterzip_countfromzip_codesGROUPBYstate;STZIP_COUNT———–AK360AL1212AR1309AZ768CA3982
在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDERBY语句,ORDERBY子句可以使用列或组函数。
selectstat,counterzip_countfromzip_codesGROUPBYstateORDERBYCOUNT———-NY4312PA4297TX4123CA3982
用HAVING子句限制分组数据
现在你已经知道了在查询的SELECT语句和ORDERBY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的:
错误SELECTsales_clerk,SUNFROMgross_salesWHEREsales_dept=’OUTSIDE’ANDSUM>10000GROUPBYsales_clerk
这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句:
SELECTsales_clerk,SUNFROMgross_salesWHEREsales_dept=’OUTSIDE’GROUPBYsales_clerkHAVINGSUM>10000;
嵌套函数
函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF….THEN…ELSE的函数。
嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中。比如下面的例子:
SELECTdeptno,GREATEST,COUNTcnt,COUNTjobs,COUNTmgrsFROMempGROUPBYdeptno;DEPTNO&n

1.字符函数

2.最简单的用法开始不使用任何参数:gloria@www.dweye.net> select
trim “TRIM e.g.” from dual;

字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值

使用方法:

上一页[1][2][3][4]下一页

select concat from dual;--等价于select 'Hello '||'World' from dual;

TRIM e.g——–DWEYE

在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL
来移去计算或操作中的 null 值。

1、比较大小

正在看的ORACLE教程是:oracle
函数。bsp;CNTJOBSMGRS—————–104422043430332

将每个单词首字母大写,其他字母小写

这也是最常见的一种使用方法,都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。

select nvl as name from student a joinschool b on a.ID=b.ID

select decode,-1,变量1,变量2) from dual;
–取较小值sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1例如:变量1=10,变量2=20则sign返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

上一页[1][2][3][4]

select initcap from dual; --返回结果为'Hello World!'select initcap from dual; --返回结果为'Hello World!'

3.其实第一种常用的方法等同于下面带有“BOTH”参数的写法gloria@www.dweye.net>
select trim “TRIM e.g.” from dual;

注意:两个参数得类型要匹配

2、此函数用在SQL语句中,功能介绍如下:

instr(x,find_string[,start][,occurrence])返回指定字符串在某字符串中的位置,可以指定搜索的开始位置和返回第几次搜索出来的结果

TRIM e.g——–DWEYE

答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,

Decode函数与一系列嵌套的
IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和
第i 个compare项匹配,就返回第i 个对应的value
。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值就都不再求值。一个为NULL的base_exp被认为和NULL
compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare
值相同的数据类型,这个数据类型也是返回值的类型。

----------搜索时下标从1开始计算select instr from dual;--从1位置开始搜索,返回第一次出现的o的位置,结果为5select instr from dual;--从6位置开始搜索,返回第一次出现的o的位置,结果为8select instr('Hello World!','o',1,2) from dual;--从1位置开始搜索,返回第二次出现o的位置,结果为8

select length from dual;--返回结果为12select length from dual;--返回结果为2

select lower from dual;

select lengthb from dual;--返回结果为12select lengthb from dual;--返回结果为6

select upper from dual;

“BOTH”参数表示同时去除字符串前后所指定的内容。

我们称它为空,ORACLE中,含有空值的表列长度为零。

Decode函数在实际开发中非常的有用

lpad(str,width[,pad_string])当字符串长度不够时,左填充补齐,可以指定补齐时用什么字符补齐,若不指定,则以空格补齐

4.既然试用了BOTH参数,我们再看一下“TRAILING”和“LEADING”参数效果gloria@www.dweye.net>
select trim (trailing from ‘ DWEYE ‘) “TRIM e.g.” from dual;

ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:

结合Lpad函数,如何使主键的值自动加1并在前面补0select
LPAD,0,1,max,14,’0′) 记录编号 from tetdmis

select lpad from dual;--返回结果为' Hello World!'select lpad('Hello World!',20,'*') from dual;--返回结果为'********Hello World!'

TRIM e.g.————DWEYE

2、定义时已经加了NOT NULL限制条件的字段

eg:

rpad(str,width[,pad_string])当字符串长度不够时,右填充补齐,原理同左填充

gloria@www.dweye.net> select trim (leading from ‘ DWEYE ‘) “TRIM
e.g.” from dual;

1、等价于没有任何值、是未知数。

select decode from a1_interval

select rpad from dual;--返回结果为'Hello World! 'select rpad('Hello World!',20,'*+') from dual;--返回结果为'Hello World!*+*+*+*+'

TRIM e.g.————DWEYE

2、NULL与0、空字符串、空格都不同。

dir 的值是1变为0,是0则变为1

ltrim从字符串左侧去除指定的所有字符串,若没有指定去除的字符串,则默认去除左侧空白符

可见,使用“TRAILING”参数可以完成字符串尾部空格的删除功能;而“LEADING”参数正好相反,完成字符串头部空格的删除功能。也就是说,使用“TRAILING”和“LEADING”参数可以指定空格的删除位置。

3、对空值做加、减、乘、除等运算操作,结果仍为空。

比如我要查询某班男生和女生的数量分别是多少?

select ltrim from dual;--返回结果为'Hello World! 'select ltrim('***+*Hello World!***+*','*+') from dual;--返回结果为'Hello World!***+*'

5.“trim_character”参数粉墨登场这个参数改变了“删除空格”的默认行为。如果想要删除字符串’xxxxDWEYExxxx’前后出现的“x”,“trim_character”参数就派上用场了。gloria@www.dweye.net>
select trim (‘x’ from ‘xxxxDWEYExxxx’) “TRIM e.g.” from dual;

4、NULL的处理使用NVL函数。

通常我们这么写:

rtrim从字符串右侧去除指定的所有字符串,原理同ltrim()

TRIM e.g——–DWEYE

5、比较时使用关键字用“is null”和“is not null”。

select count from 表 where 性别 = 男; select count from 表 where 性别
= 女;

select rtrim from dual;--返回结果为' Hello World!'select rtrim('***+*Hello World!***+*','*+') from dual;--返回结果为'***+*Hello World!'

配合“BOTH”、“TRAILING”和“LEADING”三个参数使用效果如下,与之前演示类似。看结果,不赘述。gloria@www.dweye.net>
select trim (both ‘x’ from ‘xxxxDWEYExxxx’) “TRIM e.g.” from dual;

6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,

要想显示到一起还要union一下,太麻烦了

trim从字符串两侧去除指定的所有字符串
注意,ltrim的截取集可以使多个字符,但trim的截取集只能有一个字符

TRIM e.g——–DWEYE

count处理后再查。

用decode呢,只需要一句话

select trim('*+' from '***+*Hello World!***+*') from dual;

gloria@www.dweye.net> select trim (trailing ‘x’ from ‘xxxxDWEYExxxx’)
“TRIM e.g.” from dual;

7、排序时比其他数据都大,

select decode,decode from 表

将一个NULL转换为另外一个值,如果x为NULL,则返回value,否则返回x值本身

TRIM e.g.————xxxxDWEYE

所以NULL值总是排在最后。

3,order by对字符列进行特定的排序

insert into student values;select nvl from student;

gloria@www.dweye.net> select trim (leading ‘x’ from ‘xxxxDWEYExxxx’)
“TRIM e.g.” from dual;

大家还可以在Order by中使用Decode。

nvl2,如果x不为NULL,返回value1,否则,返回value2

TRIM e.g.————DWEYExxxx

例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。

select nvl2 from student;

6.需要注意的地方这里的“trim_character”参数只允许包含一个字符,不支持多字符。报错信息如下:gloria@www.dweye.net>
select trim (leading ‘xy’ from ‘xyxxDWEYExyyx’) “TRIM e.g.” from
dual;select trim (leading ‘xy’ from ‘xyxxDWEYExyyx’) “TRIM e.g.” from
dual*ERROR at line 1:ORA-30001: trim set should have only one character

select * from table_subject order by decode(subject_name, ‘语文’, 1,
‘数学’, 2, , ‘外语’,3)

replace(x,search_string,replace_string),从字符串x中搜索search_string字符串,并使用replace_string字符串替换。并不会修改数据库中原始值

既然TRIM不能满足我们删除只剩“DWEYE”字符串的要求,有么有其他手段呢?of
course有。我们使用RTRIM和LTRIM“连环拳”完成这个任务。1)使用RTRIMgloria@www.dweye.net>
select rtrim “e.g.” from dual;

select replace('Hello World!','o','HA') from dual;

e.g.————xyxxDWEYE

substr返回字符串中的指定的字符,这些字符从字符串的第start个位置开始,长度为length个字符;如果start是负数,则从x字符串的末尾开始算起;如果
length省略,则将返回一直到字符串末尾的所有字符

2)使用LTRIMgloria@www.dweye.net> select ltrim “e.g.” from dual;

select substr from dual; --返回结果为'llo World'select substr from dual;--返回结果为'rld'select substr from dual;--返回结果为'll'select substr from dual;--返回结果为'o Wo'

e.g.————DWEYExyyx

2.数值函数

3)联合使用RTRIM和LTRIM函数达到我们的目的gloria@www.dweye.net> select
ltrim(rtrim,’xy’) “e.g.” from dual;

返回value的绝对值

e.g.——–DWEYE

select abs from dual;--返回结果为10

使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。

返回大于等于value的最小整数

7.小结

select ceil from dual; --返回结果为3

在感受Oracle函数带来便利的同时,建议对每一个常用函数都追本溯源地探究一下,也许在尝试之后您会发现:哦,原来大家经常用到这些方法只是其真实功能的沧海一粟。

返回小于等于value的最大整数

以下是其它网友的补充:

select floor from dual; --返回结果为2

如 trim ,字符1只能是单个字符。

对value进行截断,如果n>0,保留n位小数;n<0,则保留-n位整数位;n=0,则去掉小数部分

  1. trim()删除字符串两边的空格。2. ltrim()删除字符串左边的空格。3.
    rtrim()删除字符串右边的空格。4. trim
    分别从字符2串的两边开始,删除指定的字符1。5. trim([leading | trailing |
    both] trim_char from string)
    从字符串String中删除指定的字符trim_char。leading:从字符串的头开始删除。trailing:从字符串的尾部开始删除。borth:从字符串的两边删除。6.
    tim()只能删除半角空格。
select trunc from dual; --返回结果为555,不加n时默认去掉小数部分select trunc from dual;--返回结果为555.66select trunc from dual;--返回结果为500

For example:trim would return ‘tech’;trim would return
‘tech’;trim(leading ‘0’ from ‘000123’) would return
‘123’;trim(trailing ‘1’ from ‘Tech1’) would return ‘Tech’;trim(both
‘1’ from ‘123Tech111’) would return ’23Tech’;

对value进行四舍五入,保存小数点右侧的n位。如果n省略的话,相当于n=0的情况

oracle中的trim函数Oracle中的trim函数是用来删除给定字符串或者给定数字中的头部或者尾部的给定字符。trim函数具有如下的形式
trim([leading/trailing/both][匹配字符串或数值][from][需要被处理的字符串或数值])这里如果指明了leading表示从删除头部匹配的字符串,如果指明了trailing表示从删除尾部匹配的字符串,如果指明了both,或者不指明任何位置,则两端都将被删除如果不指明任何匹配字符串或数值则认为是空格,即删除前面或者后面的空格。trim函数返回的类型是varchar2下面是一些例子:截去了数字7500的后面的两个0SQL>
select trim from dual;TRIM—-75下面的例子截去了’
中秋八月中’前后的两个’中’字SQL> select trim as 诗 from
dual;诗——————秋八月下面的例子截去了’ 半夜二更半’前面的一个’半’字SQL>
select trim(leading ‘半‘ from ‘半夜二更半‘) as 诗 from
dual;诗————————夜二更半

select round from dual;--返回结果为556,不加n时默认去掉小数部分select round from dual;--返回结果为555.67select round from dual;--返回结果为600

注意:

1.trunc和round用法类似,只不过trunc是硬生生截取,并不进行四舍五入,而round进行截取时四舍五入

2.都还可以对日期的截取,可以参考写的日期函数笔记

select round from dual;select trunc from dual;

3.转换函数

将值从一种类型转换成另外一种类型,或者从一种格式转换为另外一种格式

:将x转化为字符串。 format为转换的格式,可以为数字格式或日期格式

select to_char from dual; --返回结果为12345.67select to_char('12345.67','99,999.99') from dual; --返回结果为12,345.67

to_number:将x转换为数字。可以指定format格式

select to_number + 25.5 from dual;select to_number('-$12,345.67', '$99,999.99') from dual;

:将x转换为指定的兼容的数据库类型

select cast(12345.67 as varchar2,cast, cast(12345.678 as number from dual;

to_date:将x字符串转换为日期

select to_date('2012-3-15','YYYY-MM-DD') from dual

二.聚集函数

select avg from sc;

select count from sc;

select max from sc;

select min from sc;

select sum from sc;

2.对分组行使用聚集函数

对分组后的行使用聚集函数,聚集函数会统计每组中的值,对于每组分别统计后返回一个值。

--按照职位分组,求出每个职位的最高和最低工资select job ,max from emp group by job order by job;

注意:

1.分组时select子句后边的列名必须与group
by子句后的列名一致,除非是聚合函数

select deptno,avg from EMP;--错误,因为deptno不是聚集函数,也不是group by后面跟的列名

2.不能使用聚集函数作为WHERE子句的筛选条件

select deptno from emp where avg>1000;--错误

3.分组后,需要使用条件进行筛选,则使用having过滤分组后的行,不能使用where,where只能放在group
by前面。

select deptno, avg from emp where deptno<>10 group by deptno having avg > 900;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图