oracle常用的字符串函数,【转载】oracle 常用的几个处理字符串函数

instr的语法如下:

instr( string1, string2 [, start_position [, nth_appearance ]

] )

函数说明:

该函数返回参数string2在参数string1中的位置。

start_position参数表示将从string1的第几个字符开始来查找string2。该参数为可选参数,如果省略,那么默认为1。instr函数默认的查找顺序为从左到右。当该参数为负数的时候,则从右边开始查找。

nth_appearance表示返回第几次出现的string2的位置。该参数为可选参数,如果省略则默认为1,也就是返回首次出现string2的位置。

示例:

SELECT INSTR(‘CORPORATE FLOOR’, ‘OR’, -1, 1) “aaa” FROM

DUAL;

aaa

———-

14

decode函数说明:

decode函数可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。

函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值。

如果应用中没有建立代码表,使用docode函数进行key–>value的转换是一种不错的替代方案,只是为应用的后期维护带来麻烦。

语法如下:

DECODE(control_value,value1,result1[,value2,result2…][,default_result]);

参数说明:

control _value

试图处理的数值。可以是数据库中表的某一列,DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。

value1

是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应

result1

是一组成序偶的结果值。

default_result

未能与任何一个值匹配时,函数返回的默认值。

示例:

首先创建一张sale表,并插入一些测试数据:

create table class(id char(2),name varchar2(50), valid_flag

char(1));

insert into class values('01','语文','Y');

insert into class values('02','数学','Y');

insert into class values('03','外语','N');

insert into class values('04','历史');首先看一下decode函数的基本用法:

select id, name, decode(valid_flag, 'Y', '有效', 'N',

'无效','未设置') from class;

ID NAME  DECODE(VALID_FLAG,'Y','有效','

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

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

01 语文  有效

02 数学  有效

03 外语  无效

04 历史  未设置说明:

当valid_flag为’Y'时,则返回’有效’;

当month为’N'时,则返回’无效’;

其他则返回’未设置’。

以上的sql语句可以通过case实现:

select id, name, case valid_flag

when 'Y'

then '有效'

when 'N'

then '无效'

else '未设置'

end

from class;由以上sql语句可以看出,使用decode函数要简洁的多。

另外,还可以在Order by中使用decode:

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

select * from table_subject order by decode(subject_name,

‘语文’, 1, ‘数学’, 2, , ‘外语’,3)

NVL函数

在Oracle/PLSQL中,NVL函数会将一个NULL值替换为一个非NULL值。

语法

NVL(eExpression1, eExpression2)

参数

eExpression1, eExpression2

如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果

eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和

eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null

值,则 NVL( ) 返回 .NULL.。

返回值类型

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

说明

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

值。

示例1

select nvl(‘aaa’,'bbb’) from dual;

NVL(‘AAA’,'BBB’)

——————————–

aaa

示例2

select nvl(null,’bbb’) from dual;

NVL(NULL,’BBB’)

——————————–

bbb

返回字符串bbb

示例3

select nvl(NULL,’bbb’) from dual;

NVL(NULL,’BBB’)

——————————–

bbb

返回字符串bbb,null不区分大小写。

示例4

select nvl(‘null’,'aaa’) from dual;

NVL(‘NULL’,'AAA’)

—————–

null

字符串’null’不是null。

oracle的substr函数的用法

取得字符串中指定起始位置和长度的字符串  substr( string, start_position, [ length ]

)

如:

substr('This is a test', 6, 2)  would return 'is'

substr('This is a test', 6)  would return 'is a test'

substr('TechOnTheNet', -3, 3)  would return 'Net'

substr('TechOnTheNet', -6, 3)  would return 'The'

你可能感兴趣的:(oracle常用的字符串函数)