阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle字符串操作函数

189次阅读
没有评论

共计 4161 个字符,预计需要花费 11 分钟才能阅读完成。

字符函数——返回字符值

这些函数全都接收的是字符族类型的参数 (CHR 除外) 并且返回字符值. 除了特别说明的之外, 这些函数大部分返回 VARCHAR2 类型的数值. 字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的, 比如: VARCHAR2 数值被限制为 2000 字符(Oracle 8 中为 4000 字符), 而 CHAR 数值被限制为 255 字符(在 ORACLE8 中是 2000). 当在过程性语句中使用时, 它们可以被赋值给 VARCHAR2 或者 CHAR 类型的 PL/SQL 变量.

chr()函数将 ASCII 码转换为字符:字符 –》ASCII 码;

ascii()函数将字符转换为 ASCII 码:ASCII 码 –》字符;

在 oracle 中 chr()函数和 ascii()是一对反函数。

chr()函数示例:

SQL> select chr(65) from dual;
 
CHR(65)
——-
A
accii()函数示例:

SQL> select ascii(‘A’) from dual;
 
ASCII(‘A’)
———-
        65
取出当前字段中最大的字母,并计算出下一个字母:

 

SELECT CHR(ASCII(max(SUBSTR(UPPERCD,1,1)))+1)
FROM exps_code_lm

CHR

语法: chr(x)

功能:返回在数据库字符集中与 X 拥有等价数值的字符。CHR 和 ASCII 是一对反函数。经过 CHR 转换后的字符再经过 ASCII 转换又得到了原来的字符。

使用位置:过程性语句和 SQL 语句。

CONCAT

语法:CONCAT(string1,string2)

功能:返回 string1,并且在后面连接 string2。

使用位置:过程性语句和 SQL 语句。

INITCAP

语法:INITCAP(string)

功能:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的 string。单词是用. 空格或给字母数字字符进行分隔。不是字母的字符不变动。

使用位置:过程性语句和 SQL 语句。

LTRIM

语法:LTRIM(string1,string2)

功能:返回删除从左边算起出现在 string2 中的字符的 string1。String2 被缺省设置为单个的空格。数据库将扫描 string1,从最左边开始。当遇到不在 string2 中的第一个字符,结果就被返回了。LTRIM 的行为方式与 RTRIM 很相似。

使用位置:过程性语句和 SQL 语句。

NLS_INITCAP

语法:NLS_INITCAP(string[,nlsparams])

功能:返回字符串每个单词第一个字母大写而单词中的其他字母小写的 string,nlsparams

指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和 INITCAP 相同。Nlsparams 可以使用的形式是:

‘NLS_SORT=sort’

这里 sort 制订了一个语言排序序列。

使用位置:过程性语句和 SQL 语句。

NLS_LOWER

语法:NLS_LOWER(string[,nlsparams])

功能:返回字符串中的所有字母都是小写形式的 string。不是字母的字符不变。

Nlsparams 参数的形式与用途和 NLS_INITCAP 中的 nlsparams 参数是相同的。如果 nlsparams 没有被包含,那么 NLS_LOWER 所作的处理和 LOWER 相同。

使用位置;过程性语句和 SQL 语句。

NLS_UPPER

语法:nls_upper(string[,nlsparams])

功能:返回字符串中的所有字母都是大写的形式的 string。不是字母的字符不变。nlsparams 参数的形式与用途和 NLS_INITCAP 中的相同。如果没有设定参数,则 NLS_UPPER 功能和 UPPER 相同。

使用位置:过程性语句和 SQL 语句。

REPLACE

语法:REPLACE(string,search_str[,replace_str])

功能:把 string 中的所有的子字符串 search_str 用可选的 replace_str 替换,如果没有指定 replace_str,所有的 string 中的子字符串 search_str 都将被删除。REPLACE 是 TRANSLATE 所提供的功能的一个子集。

使用位置:过程性语句和 SQL 语句。

RPAD

语法:RPAD(string1,x[,string2])

功能:返回在 X 字符长度的位置上插入一个 string2 中的字符的 string1。如果 string2 的长度要比 X 字符少,就按照需要进行复制。如果 string2 多于 X 字符,则仅 string1 前面的 X 各字符被使用。如果没有指定 string2,那么使用空格进行填充。X 是使用显示长度可以比字符串的实际长度要长。RPAD 的行为方式与 LPAD 很相似,除了它是在右边而不是在左边进行填充。

使用位置:过程性语句和 SQL 语句。

RTRIM

语法: RTRIM(string1,[,string2])

功能: 返回删除从右边算起出现在 string1 中出现的字符 string2. string2 被缺省设置为单个的空格. 数据库将扫描 string1, 从右边开始. 当遇到不在 string2 中的第一个字符, 结果就被返回了 RTRIM 的行为方式与 LTRIM 很相似.

使用位置:过程性语句和 SQL 语句。

SOUNDEX

语法: SOUNDEX(string)

功能: 返回 string 的声音表示形式. 这对于比较两个拼写不同但是发音类似的单词而言很有帮助.

使用位置:过程性语句和 SQL 语句。

SUBSTR  截取子串

语法: SUBSTR(string,a[,b])

功能: 返回从 a 位置开始的 b 个字符长的 string 的一个子字符串. 第一个字符的位置是 1. 如果 a 是 0, 那么它就被认为从第一个字符开始. 如果是正数, 返回字符是从左边向右边进行计算的. 如果 b 是负数, 那么返回的字符是从 string 的末尾开始从右向左进行计算的. 如果 b 不存在, 那么它将缺省的设置为整个字符串. 如果 b 小于 1, 那么将返回 NULL. 如果 a 或 b 使用了浮点数, 那么该数值将在处理进行以前首先被却为一个整数.

使用位置:过程性语句和 SQL 语句。

TRANSLATE

语法: TRANSLATE(string,from_str,to_str)

功能: 返回将所出现的 from_str 中的每个字符替换为 to_str 中的相应字符以后的 string. TRANSLATE 是 REPLACE 所提供的功能的一个超集. 如果 from_str 比 to_str 长, 那么在 from_str 中而不在 to_str 中而外的字符将从 string 中被删除, 因为它们没有相应的替换字符. to_str 不能为空.Oracle 把空字符串认为是 NULL, 并且如果 TRANSLATE 中的任何参数为 NULL, 那么结果也是 NULL.

使用位置:过程性语句和 SQL 语句。

UPPER

语法: UPPER(string)

功能: 返回大写的 string. 不是字母的字符不变. 如果 string 是 CHAR 数据类型的, 那么结果也是 CHAR 类型的. 如果 string 是 VARCHAR2 类型的, 那么结果也是 VARCHAR2 类型的.

使用位置: 过程性语句和 SQL 语句。

F.2 字符函数——返回数字

这些函数接受字符参数回数字结果. 参数可以是 CHAR 或者是 VARCHAR2 类型的. 尽管实际下许多结果都是整数值, 但是返回结果都是简单的 NUMBER 类型的, 没有定义任何的精度或刻度范围.

ASCII

语法: ASCII(string)

功能: 数据库字符集返回 string 的第一个字节的十进制表示. 请注意该函数仍然称作为 ASCII. 尽管许多字符集不是 7 位 ASCII.CHR 和 ASCII 是互为相反的函数.CHR 得到给定字符编码的响应字符. ASCII 得到给定字符的字符编码.

使用位置: 过程性语句和 SQL 语句。

INSTR

语法: INSTR(string1, string2[a,b])

功能: 得到在 string1 中包含 string2 的位置. string1 时从左边开始检查的, 开始的位置为 a, 如果 a 是一个负数, 那么 string1 是从右边开始进行扫描的. 第 b 次出现的位置将被返回. a 和 b 都缺省设置为 1, 这将会返回在 string1 中第一次出现 string2 的位置. 如果 string2 在 a 和 b 的规定下没有找到, 那么返回 0. 位置的计算是相对于 string1 的开始位置的, 不管 a 和 b 的取值是多少.

使用位置: 过程性语句和 SQL 语句。

INSTRB

语法: INSTRB(string1, string2[a,[b]])

功能: 和 INSTR 相同, 只是操作的对参数字符使用的位置的是字节.

使用位置: 过程性语句和 SQL 语句。

LENGTH

语法: LENGTH(string)

功能: 返回 string 的字节单位的长度.CHAR 数值是填充空格类型的, 如果 string 由数据类型 CHAR, 它的结尾的空格都被计算到字符串长度中间. 如果 string 是 NULL, 返回结果是 NULL, 而不是 0.

使用位置: 过程性语句和 SQL 语句。

LENGTHB

语法: LENGTHB(string)

功能: 返回以字节为单位的 string 的长度. 对于单字节字符集 LENGTHB 和 LENGTH 是一样的.

使用位置: 过程性语句和 SQL 语句。

NLSSORT

语法: NLSSORT(string[,nlsparams])

功能: 得到用于排序 string 的字符串字节. 所有的数值都被转换为字节字符串, 这样在不同数据库之间就保持了一致性. Nlsparams 的作用和 NLS_INITCAP 中的相同. 如果忽略参数, 会话使用缺省排序.

使用位置: 过程性语句和 SQL 语句。

 

to_single_byte(c)转换成半角
to_multi_byte(c) 转换成全角

select * from testtree tt where length(tt.name)!=lengthb(tt.name)

select instr(‘corporatee floor’,‘or’)“Instring” from dual;

输出为 2

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130634.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4161字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中