热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PL/SQL字符串

PLSQL中的字符串实际上是一个具有可选大小规格的字符序列。字符可以是数字,字母,空白,特殊字符或全部的组合。PLSQL提供三种字符串–固定长度字符串–在这样的字符串中,程序员在声

PL/SQL中的字符串实际上是一个具有可选大小规格的字符序列。字符可以是数字,字母,空白,特殊字符或全部的组合。 PL/SQL提供三种字符串 –

  • 固定长度字符串 – 在这样的字符串中,程序员在声明字符串时指定长度。该字符串的右边填充规定的长度。
  • 可变长度字符串 – 在这样的字符串中,指定字符串的最大长度达32,767,并且不会填充。
  • 字符大对象(CLOB) – 这些可变长度字符串最多可达128TB

PL/SQL字符串可以是变量或文字。 字符串文字用引号括起来。 例如,

'This is a string literal.'
--或者
'hello world'

要在字符串文字中包含单引号,需要在彼此之间键入两个单引号。 例如,

'this isn''t what it looks like'

声明字符串变量

Oracle数据库提供了许多字符串数据类型,如:CHARNCHARVARCHAR2NVARCHAR2CLOBNCLOB。 以“N”为前缀的数据类型为“国家字符集”数据类型,用于存储Unicode字符数据。

如果需要声明一个可变长度的字符串,则必须提供该字符串的最大长度。例如,VARCHAR2数据类型。 以下示例说明声明和使用一些字符串变量 –

SET SERVEROUTPUT ON SIZE 99999;
DECLARE
name varchar2(20);
company varchar2(30);
introduction clob;
choice char(1);
BEGIN
name := 'Max Su';
company := 'Hixiaoniu';
introduction := ' Hello! I''m Max Su from Hixiaoniu.';
choice := 'y';
IF choice = 'y' THEN
dbms_output.put_line(name);
dbms_output.put_line(company);
dbms_output.put_line(introduction);
END IF;
END;
/

当上述代码在SQLPlus提示符下执行时,它会产生以下结果 –

《PL/SQL字符串》

要声明一个固定长度的字符串,请使用CHAR数据类型。 在这里,不必为固定长度变量指定最大长度。 如果不考虑长度约束,Oracle数据库将自动使用所需的最大长度。以下两个声明是相同的 –

red_flag CHAR(1) := 'Y';
red_flag CHAR := 'Y';

PL/SQL字符串函数和运算符

PL/SQL提供用于连接两个字符串的级联运算符(||)。 下表提供了PL/SQL提供的字符串函数 –

编号函数描述
1ASCII(x);返回字符x的ASCII值。
2CHR(x);返回ASCII值为x的字符。
3CONCAT(x, y);连接两个字符串xy,并返回连接后的字符串。
4INITCAP(x);x中每个单词的初第一个字母转换为大写,并返回该字符串。
5INSTR(x, find_string [, start] [, occurrence]);x字符串中搜索find_string子串并返回找到的位置。
6INSTRB(x);返回字符串x在另一个字符串中第一次再现的位置,但返回值(以字节为单位)。
7LENGTH(x);返回x中的字符数,也是计算字符串的长度。
8LENGTHB(x);返回单字节字符集的字符串长度(以字节为单位)。
9LOWER(x);x字符串中的字母转换为小写,并返回此小写字符串。
10LPAD(x, width [, pad_string]) ;使用空格垫放在x字符串的左边,以使字符串的长度达到宽度字符。
11LTRIM(x [, trim_string]);修剪x字符串左边的字符。
12NANVL(x, value);如果x匹配NaN特殊值(而不是数字),则返回值,否则返回x字符串。
13NLS_INITCAP(x);INITCAP(x)函数相同,只不过它可以使用NLSSORT指定的其他排序方法。
14NLS_LOWER(x) ;LOWER(x)函数相同,除了可以使用NLSSORT指定的不同排序方法。
15NLS_UPPER(x);UPPER()函数相同,除了可以使用NLSSORT指定的不同排序方法。
16NLSSORT(x);更改排序字符的方法。必须在任何NLS()函数之前指定; 否则,将使用默认排序。
17NVL(x, value);如果xnull则返回value值; 否则返回x
18NVL2(x, value1, value2);如果x不为null则返回值value1; 如果xnull,则返回value2
19REPLACE(x, search_string, replace_string);x字符串中搜索search_string并将其替换为replace_string
20RPAD(x, width [, pad_string]);使用空格垫放在x字符串的右边,以使字符串的长度达到宽度字符。
21RTRIM(x [, trim_string]);从右边修剪x字符串。
22SOUNDEX(x) ;返回一个包含x的语音表示的字符串。
23SUBSTR(x, start [, length]);返回x字符串从指定start位置开始到一个可选指定长度(length)范围内的子字符串。
24SUBSTRB(x);SUBSTR()相同,除了参数以字节表示,还支持单字节字符系统的字符。
25TRIM([trim_char FROM) x);修剪x字符串的左边和右边的字符。
26UPPER(x);x中的字母转换为大写,并返回此大写后的字符串。

现在来看下面几个例子来了解这个概念 –

示例-1

SET SERVEROUTPUT ON SIZE 99999;
DECLARE
greetings varchar2(11) := 'hello world';
BEGIN
dbms_output.put_line(UPPER(greetings));
dbms_output.put_line(LOWER(greetings));
dbms_output.put_line(INITCAP(greetings));
/* retrieve the first character in the string */
dbms_output.put_line ( SUBSTR (greetings, 1, 1));
/* retrieve the last character in the string */
dbms_output.put_line ( SUBSTR (greetings, -1, 1));
/* retrieve five characters,
starting from the seventh position. */
dbms_output.put_line ( SUBSTR (greetings, 7, 5));
/* retrieve the remainder of the string,
starting from the second position. */
dbms_output.put_line ( SUBSTR (greetings, 2));
/* find the location of the first "e" */
dbms_output.put_line ( INSTR (greetings, 'e'));
END;
/

当上述代码在SQLPlus提示符下执行时,它会产生以下结果 –

HELLO WORLD
hello world
Hello World
h
d
world
ello world
2
PL/SQL 过程已成功完成。

示例-2

SET SERVEROUTPUT ON SIZE 99999;
DECLARE
greetings varchar2(30) := '......Hello World.....';
BEGIN
dbms_output.put_line(RTRIM(greetings,'.'));
dbms_output.put_line(LTRIM(greetings, '.'));
dbms_output.put_line(TRIM( '.' from greetings));
END;
/

当上述代码在SQLPlus提示符下执行时,它会产生以下结果 –

《PL/SQL字符串》


    推荐阅读
    • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
    • 《数据结构》学习笔记3——串匹配算法性能评估
      本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
    • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
    • 提升Python编程效率的十点建议
      本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
    • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
    • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
    • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
      本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
    • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
    • [译]技术公司十年经验的职场生涯回顾
      本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
    • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
      本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
    • JVM 学习总结(三)——对象存活判定算法的两种实现
      本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
    • WebSocket与Socket.io的理解
      WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
    • 深入理解Kafka服务端请求队列中请求的处理
      本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
    • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
    • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
    author-avatar
    黑天天
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有