Oracle的字符串函数

Oracle Ascii()函数

在Oracle中,Ascii()函数可以返回代表指定字符的数字值代码,那么Ascii()函数具体该如何实用呢?

Ascii()函数语法

sql 复制代码
ASCII( single_character )

参数

single_character:指定的字符来检索NUMBER代码。 如果输入多个字符,则ASCII函数将返回第一个字符的值,并忽略第一个字符后的所有字符。

返回值

ASCII函数返回一个数值。

适用于
ASCII函数可用于以下版本的Oracle:

sql 复制代码
Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i、Oracle 8i

Ascii()函数示例

下面是一些Oracle ASCII函数的使用示例:

sql 复制代码
ASCII('t')
Result: 116

ASCII('T')
Result: 84

ASCII('T2')
Result: 84

Oracle Asciistr()函数

在Oracle中,Asciistr()函数可以使用数据库字符集将任何字符集中的字符串转换为ASCII字符串。

Asciistr()函数语法

sql 复制代码
ASCIISTR( string )

参数

string:任何字符集中的字符串,希望将其转换为数据库字符集中的ASCII字符串。

返回值

返回一个字符串值。

适用于

ASCIISTR()函数可用于以下版本的Oracle :

sql 复制代码
Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i

示例

下面是一些Oracle ASCIISTR()函数的使用示例:

sql 复制代码
ASCIISTR('A B C Ä Ê')
Result: 'A B C 0C4 0CA'

ASCIISTR('A B C Õ Ø')
Result: 'A B C 0D5 0D8'

ASCIISTR('A B C Ä Ê Í Õ Ø')
Result: 'A B C 0C4 0CA 0CD 0D5 0D8'

Oracle Chr()函数

Oracle Chr()函数可以根据数字代码返回字符,其功能和ASCII函数相反。

Chr()函数语法

sql 复制代码
CHR( number_code )

参数

number_code:用于检索对应字符的NUMBER代码。

返回值

返回一个字符串值。

适用于

CHR()函数可用于以下版本的Oracle:

sql 复制代码
Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i

示例

下面是Oracle CHR()函数的使用示例:

sql 复制代码
CHR(116)
Result: 't'

CHR(84)
Result: 'T'

Oracle Compose()函数

在Oracle中,使用Compose()函数可以返回一个Unicode字符串。

Compose()函数语法

sql 复制代码
COMPOSE( string )

string:用于创建Unicode字符串的输入值。 它可以是char,varchar2,nchar,nvarchar2,clob或nclob。

返回值

返回一个字符串值。

以下是可以在Compose()函数中的其他字符组合使用的unistring值的列表:

Compose()函数可用于以下版本的Oracle :

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

示例

下面是Oracle Compose()函数的使用示例:

sql 复制代码
COMPOSE('o' || unistr('\0308') )
Result: ö

COMPOSE('a' || unistr('\0302') )
Result: â

COMPOSE('e' || unistr('\0301') )
Result: é

Oracle Concat()函数

CONCAT()函数语法

sql 复制代码
CONCAT( string1, string2 )
sql 复制代码
string1:第一个要连接的字符串。

string2:第二个要连接的字符串。

返回值

CONCAT函数返回string1连接string2后的一个字符串值。

适用版本

CONCAT()函数可用于以下版本的Oracle:

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

示例

下面是Oracle CONCAT()函数的使用示例:

sql 复制代码
CONCAT('Oraok', '.com')
-- Result: 'Oraok.com'

CONCAT('a', 'b')
-- Result: 'ab'

需要注意:

在Oracle中,CONCAT函数将只允许您将两个值连接在一起。如果需要连接多个值,那么我们可以嵌套多个CONCAT函数调用。

示例:

sql 复制代码
SELECT CONCAT(CONCAT('A', 'B'),'C')
FROM dual;
-- Result: 'ABC'

以上这个例子将3个值连接在一起并返回'ABC'字符串值。

sql 复制代码
SELECT CONCAT(CONCAT(CONCAT('A', 'B'),'C'),'D')
FROM dual;
- Result: 'ABCD'

这个例子将连接4个值并返回'ABCD'。

连接单引号

由于CONCAT函数中的参数由单引号分隔,因此如何在CONCAT函数的结果中添加单引号字符并不简单。

我们来看一个相当简单的例子,它展示了如何使用CONCAT函数向结果字符串添加单引号。

sql 复制代码
SELECT CONCAT('Let''s', ' learn Oracle')
FROM dual;
-- Result: Let's learn Oracle
由于参数包含在单引号中,因此在引号内使用2个额外的单引号来表示生成的连接字符串中的单引号。

Oracle || 连接运算符

在 Oracle中,|| 运算符可以将两个或两个以上的字符串连接在一起。

|| 运算符语法

sql 复制代码
string1 || string2 [ || string_n ]

string1: 第一个要连接的字符串。

string2:第二个要连接的字符串。

string_n:可选项,第 n 个要连接的字符串。

返回值

返回连接后的一个字符串值。

适用版本

|| 运算符可用于以下版本的 Oracle:

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、Oracle 9i

示例

下面是 Oracle || 运算符的使用示例:

sql 复制代码
'oraok' || '.com'

'a' || 'b' || 'c' || 'd'

结果为:

sql 复制代码
'oraok.com'

'abcd'

案例:

sql 复制代码
select '姓名:' || c.stuname || ', 课程:' || b.coursename || ', 成绩:' || a.score || '分数' as sxcj
  from score a, course b, stuinfo c
 where a.courseid = b.courseid
   and a.stuid = c.stuid

连接空格字符

将值连接在一起时,可能需要添加空格字符来分隔连接的值。 否则,可能会得到一个串联值一起运行的长字符串。 这使得阅读结果非常困难。

下面来看一个简单的例子。可以使用||运算符连接空格字符。

sql 复制代码
SELECT 'Dave' || ' ' || 'Anderson'
FROM dual;
-- Result: 'Dave Anderson'

使用了 || 运算符在 Dave 和 Anderson 字符串值之间添加空格字符,最后可以得到以下结果:

sql 复制代码
'Dave Anderson'

|| 运算符将多个字段连接在一起时,连接空格字符。

例如:

sql 复制代码
SELECT first_name || ' ' || last_name AS customer_name
FROM customers;

此示例查询将返回结果集,其中一列由 customers 表中的 first_name 和 last_name 字段(用空格分隔)组成。 结果集中的列将被别名为 customer_name。

连接单引号

|| 运算符将连接包含在单引号中的字符串值,但并不直接说明如何在连接字符串的结果中添加单引号字符。

我们来看一个相当简单的例子,它显示了如何使用||运算符向结果字符串添加单引号。

例如:

sql 复制代码
SELECT 'Let''s' || ' learn Oracle'
FROM dual;

结果为

sql 复制代码
'Let's learn Oracle'

由于字符串值用单引号引起来,因此引号内使用2个额外的单引号来表示生成的连接字符串中的单引号。

如果想从其他字符串值中分出单引号,则还可以按如下方式重写此查询:

sql 复制代码
SELECT 'Let' || '''' || 's' || ' learn Oracle'
FROM dual;

结果为

sql 复制代码
 'Let's learn Oracle'

Oracle Convert()函数

在 Oracle 中,Convert() 函数可以将字符串从一个字符集转换为另一个字符集

句法

sql 复制代码
Description of convert.gif follows

Convert() 函数语法

sql 复制代码
CONVERT( string1, char_set_to [, char_set_from] )

string1:要转换的字符串。

char_set_to:要转换为的字符集。

char_set_from:可选的,要从中转换的字符集。

返回值

CONVERT 函数返回特定字符集中的字符串值。 可用的字符集是:

适用版本

Convert() 函数可用于以下版本的 Oracle:

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

示例

下面是 Oracle CONVERT() 函数的使用示例:

sql 复制代码
SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1') 
   FROM DUAL; 

CONVERT('ÄÊÍÕØABCDE'

A E I ? ? A B C D E ?

您可以查询v $ NLS _有效值视图获取有效字符集的列表,如下所示:

sql 复制代码
SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'

Oracle Dump()函数

在Oracle中,使用Dump()函数可以返回一个varchar2值,这个值包含了数据类型代码、字节长度和表达式的内部表示形式。

Dump()函数语法

sql 复制代码
DUMP( expression [, return_format] [, start_position] [, length] )

expression:要分析的表达式。

return_format:决定了返回值的格式,该参数可以是以下任何值:

● 8 :八进制符号

 ● 10 :十进制符号

 ● 16 :十六进制符号

 ● 17 :单个字符

 ● 1008 :带字符集名称的八进制符号

 ● 1010 :带字符集名称的十进制符号

 ● 1016 :带字符集名称的十六进制符号

 ● 1017 :带字符集名称的单个字符

start_position :可选的,要返回的内部表示的起始位置。

length :可选的,要返回的内部表示的长度。

返回值

返回一个VARCHAR2值。如果省略了return_format,start_position和length参数,则DUMP函数将以十进制表示形式返回整个内部表示形式。

适用版本

Convert()函数可用于以下版本的Oracle :

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

示例

下面是一些Oracle Dump()函数的使用示例:

sql 复制代码
DUMP('Tech')
-- Result: 'Typ=96 Len=4: 84,101,99,104'

DUMP('Tech', 10)
-- Result: 'Typ=96 Len=4: 84,101,99,104'

DUMP('Tech', 16)
-- Result: 'Typ=96 Len=4: 54,65,63,68'

DUMP('Tech', 1016)
-- Result: 'Typ=96 Len=4 CharacterSet=US7ASCII: 54,65,63,68'

DUMP('Tech', 1017)
-- Result: 'Typ=96 Len=4 CharacterSet=US7ASCII: T,e,c,h'

Oracle Initcap()函数

在Oracle中,Initcap()函数可以将每个单词中的第一个字符设置为大写,其余的设置为小写。
Initcap()函数语法

sql 复制代码
INITCAP( string1 )

string1 :字符串参数,其中每个单词中的第一个字符将转换为大写字母,其余所有字符转换为小写字母。

返回值

返回一个字符串值。

适用版本

Initcap()函数可用于以下版本的Oracle :

sql 复制代码
Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

示例

下面是一些Oracle Initcap()函数使用示例:

sql 复制代码
INITCAP('tech on the oraok');
-- Result: 'Tech On The Oraok'

INITCAP('GEORGE BURNS');
-- Result: 'George Burns'

Oracle 运算符

Oracle 算术运算符包括+、-、*、/四个,其中/获得的结果是浮点数。

案例1、求2018年上学期数学的平均成绩。

sql 复制代码
select a.*, b.coursename, c.stuname
  from score a, course b, stuinfo c
 where a.courseid = b.courseid
   and a.stuid = c.stuid;
 
select b.coursename, sum(a.score) / count(1)
  from score a, course b
 where a.courseid = b.courseid
   and a.courseid = 'R20180101'
 group by b.coursename;

Oracle关系运算符

Oracle 关系运算符在 where 条件语句当中经常使用到,常用的关系如下:

Oracle逻辑运算符

Oracle 的逻辑运算符有三个:AND、OR、NOT。

案例2、查看2018年上学期数学成绩在85-95分之间的同学:

sql 复制代码
select a.*,b.coursename,c.stuname
    from score a,course b,stuinfo c
where a.courseid=b.courseid
    and a.stuid=c.stuid and a.score>='85'and a.score<='95'
相关推荐
月渐盈1 分钟前
SQL:给数据表字段拼接字符串
数据库·sql
群联云防护小杜20 分钟前
CC攻击为什么难防御?
网络·网络协议·安全·web安全·udp
little_kid_pea36 分钟前
MySQL LOAD DATA INFILE导入数据报错
数据库·mysql
花生的酱36 分钟前
Shell编程之正则表达式与文本处理器
linux·运维·正则表达式
woshilys36 分钟前
sql server 查看io资源使用
数据库·sqlserver
训山37 分钟前
Java线程池浅谈(创建线程池及线程池任务处理)
java·服务器·数据库
Ujimatsu43 分钟前
虚拟机安装Ubuntu 24.04服务器版(命令行版)
linux·运维·服务器·ubuntu·运维开发
shaoweijava1 小时前
足球社区管理系统 基于Spring Boot框架实现的足球社区管理系统(程序+数据库+报告)
数据库·spring boot·后端
綦枫Maple1 小时前
Jmeter基础篇(22)服务器性能监测工具Nmon的使用
运维·服务器·jmeter·性能监控·nmon
眷怀1 小时前
网卡绑定bonding
linux·运维·服务器·网络·云计算