plsql programming 08 字符串
一般, char 和 nchar 类型很少使用.
建议使用 varchar2 和 nvarchar2, 其中( n 开头的是国家字符集, 没有n开头的是数据库字符集 )
一般也不怎么使用国家字符集
variable_name VARCHAR2(max_length [char | byte]); 其中 char 说明以字符为单位, byte说明以字节为单位.
如果忽略了char或 byte( 我们一般都这样做, 定义时直接 varchar2(10) 类似这种), 这时, 要看初始化参数NLS_LENGTH_SEMANTICS 查看默认的到底是使用 char 还是 byte.
例如:
declare
small_string VARCHAR2(4);
line_of_text VARCHAR2(2000);
feature_name VARCHAR2(100 BYTE); -- 100字节
emp_name VARCHAR2(30 CHAR); -- 30个字符的字符串 (个人觉得这种好点, 但是我使用DBCA创建的数据库, 默认的居然是 byte)
使用字符串
就是使用oracle提供的字符串函数来处理字符串.
字符串常量: ‘Brighten the corner’
q’!Arent’t you glad you’re learning pl/sql with o’reilly ?!’可以看到, 只要使用这种, 标记符号里边无论有多少个单引号都没有关系, 另外分隔符!!也可以换成其他的, 例如 [] 等等
另外: 一般也不用特殊关系国家字符集
一些字符串函数:
cancat(string1, string2)
upper(string1)
lower(string1)
Initcap(string1) -- 首字符大写
LPAD, RPAD
SUBSTR
INSTR
TRIM, LTRIM, RTRIM
ORACLE 10G 以后引入了对正则表达式的支持.
REGEXP_LIKE(字符串, 模式串) -- 注意, 这不是普通的 LIKE, 例如:
name varchar2(60) := ‘Anna, Matt, Joe, Nathan, Andrew, Jeff, Aaron’;
com_string := REGEXP_LIKE(name, ‘^([a-z A-z]*,)+([a-z A-Z]*){1}$’)
如果能匹配, 则返回 true, 否则返回 false
[a-z A-Z]: 表示 小写字母 空格 大写字母
[a-z A-Z]* 表示 小写字母 空格 大写字母 重复 0 –n 次
([a-z A-Z]*) 圆括号表示定义了一个子表达式
([a-z A-Z]*)+ 加号表示前边的子表达式 1-n 个
^ $ 表示开头和结尾
REGEXP_INSTR : 定位一个模式
REGEXP_INSTR(source_string, patern [, beginning_position [, occurence
[, return_option
[, match_modifier [, subexpression]]]]]])
看来, 这里的正则表达式和别的语言的基本一样
REGEXP_SUBSTR 函数, 参数基本和 REGEXP_INSTR 一样
使用空字符串
varchar2 类型的 ‘’ 空字符串 就等于 null, 而 char 类型的 ‘’ 不等于 null
字符串比较, 例如: (我们只讨论varchar2类型, char类型支持空白补齐, 而varchar2类型不支持)
name1 char(10) := ‘hello’;
name2 varchar2(20) := ‘hello’;
虽然看起来 name1 和 name2 值相同, 但是因为他们的类型一个是varchar2(10), 一个是 varchar2(20), 而varchar2不支持空白补齐, 所以 name1 <> name2 , name1 不等于 name2(如果是char类型, 就相等)
但是, 如果同时都是 varchar2 类型的, 倒更好了, 因为都不支持空白补齐, 所以name1 和 name2 是相等的.
字符串这章有很多函数, 基本跟别的语言差不多用法.
plsql programming 08 字符串的更多相关文章
- Python web前端 08 字符串 数组 json
Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...
- plsql programming 16 动态SQL和动态PLSQL
动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL ...
- plsql programming 17 过程, 函数与参数
代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程 ...
- plsql programming 04 条件和顺序控制
1. 条件语句 if salary > 40000 or salary is NULL then give_bonus(employee_id, 500); end if; if conditi ...
- leetcode刷题笔记08 字符串转整数 (atoi)
题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...
- PLSQL Split分割字符串
系统自带的split,使用起来方便,但是如果字符串太长,可能会出现异常,这里,我自己写了一个也是该名字,放在自己的包中,引用的时候带包名就好了. --系统自带的函数 /*CURSOR cur_temp ...
- plsql programming 01 plsql概述
授权 从 oracle 8i 开始, oracle 用通过提供 authid 子句为 pl/sql 的执行授权模型, 这样我们可以选择使用 authid current_user(调用者权限)来执行这 ...
- plsql programming 14 DML和事务管理
我们可以把多个SQL语句集中在一起, 在逻辑上组成一个事务, 从而保证这些操作或者全部被保存到数据库(用sql的说法就是”提交”), 或者被整体驳回(用sql的说法是“回滚”). 事务: ACID 原 ...
- plsql programming 11 记录类型
记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: ...
随机推荐
- 纯C实现面向对象
#include <stdio.h> #include <stdlib.h> //接口 #ifndef Interface #define Interface struct # ...
- CSS中样式
CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离.要想让CSS对网页内容有效果,必须将CSS代码引入网页,通常有四 ...
- 关于group by后为每个分组编号
- [Android]Volley源代码分析(二)Cache
Cache作为Volley最为核心的一部分,Volley花了重彩来实现它.本章我们顺着Volley的源代码思路往下,来看下Volley对Cache的处理逻辑. 我们回忆一下昨天的简单代码,我们的入口是 ...
- JavaScriptCore全面解析 (上篇)
收录待用,修改转载已取得腾讯云授权 作者 | 殷源 编辑 | 迷鹿 殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者,现就职于腾讯. JavaScript越来越多地出现在我们客户 ...
- Java LinkedList的模拟实现
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.查询即从第一个节点,不断指 ...
- IntelliJ IDEA单元测试和代码覆盖率图解
转载:http://blog.csdn.net/u011872919/article/details/11566713 本文将展示如何使用IntelliJ IDEA开发单元测试和分析覆盖率. 1 创建 ...
- Java 1.7 ReentrantReadWriteLock源代码解析
因为本人水平与表达能力有限,有错误的地方欢迎交流与指正. 1 简单介绍 可重入读写锁时基于AQS实现的,典型的用法如JDK1.7中的演示样例: class RWDictionary { private ...
- 序列化和反序列化Java 8的时间/日期类
序列化 假如有 Clock 类: public class Clock { private LocalDate localDate; private LocalTime localTime; priv ...
- OpenStack-Heat中的AWS::WaitCondition的使用
在heat中.一个instance的创建成功信号是在这个instance状态成为active之后发出的,这时候user-data可能还没有运行.可是heat已经觉得这个resource创建成功了,開始 ...