oracle学习 第四章 单行函数 ——02

来源:互联网 发布:英雄无敌3 mac 10.10 编辑:程序博客网 时间:2024/05/17 04:43

4.3 单行字符型函数

常用的单行字符型函数包括:

LOWER

UPPER

INITCAP

CONCAT

SUBSTR

LENGTH

INSTR

TRIN

REPLAC

下面,我们通过例子来分别介绍他们。

LOWER(列名|表达式):该函数是把字符转换成新小写。

可以通过例4-1的查询语句来验证这一单行字符型函数。

例 4-1

SQL> SELECT LOWER('SQL:Structural Query Language')  2  FROM dual;

例 4-1 结果


这里的dual使系统的一个虚表(伪表)。那么Oracle为什么要引入这个虚表呢?

在我们第一张中介绍过,在查询语句中必须包含连个字句。还记得是哪两个子句吗?在查询语句中必须包含SELECT和FROM两个字句。

可是LOWER('SQL:Structural Query Language')不属于任何表,我们如何在不违反SQL的语法前提下显示它呢?Oracle提供的虚表dual,就是用来解决这一难题的。

UPPER(列名|表达式):该函数把字符转换成大写。

可以通过例 4-2的查询语句来验证这一单行字符型函数。

例 4-2 

SQL> SELECT UPPER('sql is used exclusively in rdbmses')  2  FROM dual;

例 4-2 结果


INITCAP(列名|表达式):该函数是吧每个字的头一个字符转换成大写,求的转换成小写。

可以通过如例 4-3的查询语句来验证这一单行字符型函数。

例 4-3 

SQL> SELECT INITCAP('SQL is en ENGLISH LIKE language')  2  FROM dual;

例 4-3 结果


CONCAT(列名|表达式,列名|表达式):该函数是把同一个字符串和第二个字符串连接成一个字符串。

可以通过例4-4的查询语句来验证这一单行字符型函数。

例 4-4

SQL> SELECT CONCAT('SQL allows you to manipulate the data in DB',  2                'without any programming knowledge')  3  FROM dual;

例 4-4 结果


SUBSTR(列名|表达式):该函数是返回指定的子串。该子串是从第m个字符开始,其长度为n

可以通过例 4-5的查询语句来验证这一单行字符型函数。

例 4-5

SQL> SELECT SUBSTR('SQL Lets you concentrate on what has to be done',14)  2  FROM dual;

例 4-5 结果


在这个例子中,我们省略了n,其结果是返回从第14个字符开始一直到结尾的所有字符。

LENGTH(列名|表达式):该函数是返回列中或表达式中字符串的长度。

可以通过 例 4-6 的查询语句来验证这一单行字符串函数。

例 4-6

SQL> SELECT LENGTH('SQL does not let you concentrate on how it will be achieved')  2  FROM dual;

例 4-6 结果


INSTR(列名|表达式,‘字符串’,[m],[n]):该函数是返回所给字符串的数字位置,表示从第m个字符开始搜索,n表示所给字符串出现的次数,他们的默认值都是1.

您可以通过例 4-7的查询语句来验证这一单行字符型函数。

例 4-7 

SQL> SELECT INSTR('SQL allows for dynamic DB changes','F')  2  FROM dual;

例 4-7 结果


上面例子说明所给的字符串是鱼大小写有关的。因此,我们只要把例4-7中的‘F’改成‘f’就可以得到例4-8所需的结果。

例 4-8 

SQL> SELECT INSTR('SQL allows for dynamic DB changes','f')  2  FROM dual;

例 4-8 结果


如果读者有时间的话,请仔细阅读例4-1到例4-8中的字符串。他们实际上是一个有关SQL的说明。

为了帮助读者理解,在这里给出如下的中文译文:

例 4-1: SQL结构化的查询语言

█ 例 4-2: SQL仅适用于关系型数据库管理系统

█ 例 4-3: SQL是一种与英语相似的语言

█ 例 4-4: SQL允许您在不具备任何程序设计知识的情况下操纵数据库中的数据

█ 例 4-5: SQL让您把精力集中在必须要做的事情上

█ 例 4-6: SQL不让您把经历集中在您如何去做这件事上

█ 例 4-7: SQL允许动态的改变数据库

█ 例 4-8: SQL允许动态的改变数据库

当您仔细阅读完以上有关SQL的说明之后,相信您对SQL的理解一定会更加深刻,也许会达到一个新的层次。

TRIM([leading|trailing|borh]要去掉的字符FROM源字符串):该函数能从“源字符串”中的头(leading)部,或尾(trailing)部,或者从头(leading)部和尾(trailing)部(both)去掉“要去掉的字符”。

如果没有指定头(leading)或尾(trailing),TRIM函数按默认(both)处理(该函数是8i版本引入的,在8i之前的版本中是两个函数LTRIM和RTRIM)。

可以通过例4-9的查询语句来去掉SQL*PLUS前面的文号。

例 4-9

SQL> SELECT TRIM('?'FROM'?SQL*PLUS is the SQL implementation  2               used in an Oracle RDBMS or ORDBMS.')  3  FROM dual;
例 4-9 结果


也可以通过例4-10的查询语句来去掉row后面的的两个文号。

例 4-10

SQL> SELECT TRIM('?'FROM 'It can process data in sets of rows??')  2  FROM dual;

例 4-10 结果


以上两个例子都没有指出是去掉头部还是尾部的字符,因此Oracle按默认Both来处理。但在例4-9中只有在头部有“?”而例4-10中只有在尾部有“?”,所以Oracle系统可以正常的处理。但在例4-11中,TRIM函数的这种方法就要遇到麻烦了。

例 4-11

SQL> SELECT TRIM('s' FROM 'sql*plus is a fourth generation query language')  2  FROM dual;

例 4-11 结果


在例4-11的SQL语句中,我们是想去掉尾部的‘s’,但Oracle系统把开头的和结尾的“s”都去掉了。这显然不是我们所希望的结果。这时我们可以用trailing选项来解决这个问题。现在您可以将例 4-11的SQL语句修改如例 4-12

例 4-12

SQL> SELECT TRIM(trailing 's'FROM 'sql*plus is a foutrh generation uery languages')  2  FROM dual;

例 4-12 结果


这次终于得到了自己想要的结果。

我们并没有给出在TRIM函数中直接使用Leading选项的例子。如果读者感兴趣的话,不妨自己试着构造一个或者几个这样的例子。

REPLACE(正文表达式,要搜寻的字符串,替换字符串):该函数是在“正文表达式”中查找“要搜寻的字符串”,如果找到了就用“替代字符串”替代。

可以通过里4-13的查询语句来验证这一单行字符型函数。

例 4-13

SQL> SELECT REPLACE('SQL*PLUS supports loops or if statements','supports',  2                     'does not support')  3  FROM dual;

例 4-13 结果


如果读者有时间的话,请仔细阅读从例4-9至4-13中的字符串。他们实际上是对SQL*PLUS的说明

为了帮助读者理解,在这里给出如下的中文译文:

例 4-9 :  SQL*PLUS是SQL的一种实现,它用在Oracle的关系型数据库管理系统或面向对象的关系型数据库管理系统中

█ 例 4-10: 它可以一次处理多行数据

█ 例 4-11: SQL*PLUS是一种第四代查询语言

█ 例 4-12: SQL*PLUS是一种第四代查询语言

█ 例 4-13: SQL*PLUS不支持循环和判断(分支)语句

当仔细的阅读完伊桑有关SQL*PLUS的说明之后,相信您不但对SQL*PLUS的理解一定会更加深刻,而且对SQL和SQL*PLUS之间的关系也会更加清楚。也许会又到了一个更高的层次。

-----------------------------待续------------------------

上一篇:oracle学习 第四章 单行函数 ——01

下一篇:



1 0
原创粉丝点击