一般, 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 字符串的更多相关文章

  1. Python web前端 08 字符串 数组 json

    Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...

  2. plsql programming 16 动态SQL和动态PLSQL

    动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL ...

  3. plsql programming 17 过程, 函数与参数

    代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程 ...

  4. plsql programming 04 条件和顺序控制

    1. 条件语句 if salary > 40000 or salary is NULL then give_bonus(employee_id, 500); end if; if conditi ...

  5. leetcode刷题笔记08 字符串转整数 (atoi)

    题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...

  6. PLSQL Split分割字符串

    系统自带的split,使用起来方便,但是如果字符串太长,可能会出现异常,这里,我自己写了一个也是该名字,放在自己的包中,引用的时候带包名就好了. --系统自带的函数 /*CURSOR cur_temp ...

  7. plsql programming 01 plsql概述

    授权 从 oracle 8i 开始, oracle 用通过提供 authid 子句为 pl/sql 的执行授权模型, 这样我们可以选择使用 authid current_user(调用者权限)来执行这 ...

  8. plsql programming 14 DML和事务管理

    我们可以把多个SQL语句集中在一起, 在逻辑上组成一个事务, 从而保证这些操作或者全部被保存到数据库(用sql的说法就是”提交”), 或者被整体驳回(用sql的说法是“回滚”). 事务: ACID 原 ...

  9. plsql programming 11 记录类型

    记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: ...

随机推荐

  1. ajax asynx:false

    默认设置下,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为 false.注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行 (默认: true) 默认设置下,所有请求均为 ...

  2. B7:访问者模式 Visitor

    表示一个作用于某对象结构中各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 适用场景:1.适用于元素类数据结构相对稳定(类的方法固定,但属性可以变化,如果方法变化很大,就无 ...

  3. ssh2学习-applicationContext.xml文件配置-----<context:annotation-config/>详解

    当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如: 使用@Autowired注解,必须事先在Spring容器中声明AutowiredA ...

  4. mui.fire() 和 mui.trigger()

    导读:添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,通过mui.fire()方法可触发目标窗口的自定义事件 监听自定义事件 添加自定义事件监听操作和标准js事件监听类似 ...

  5. java 学习帮助

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今 天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来 ...

  6. loadrunner使用sitescope监测监控mysql数据库

    分类: LoadRunner 性能测试 2012-11-22 00:14 2644人阅读 评论(0) 收藏 举报 loadrunnerLoadRunnermysqlMySQLMysqlMYSQLMyS ...

  7. iOS 两种不同的图片无限轮播

    代码地址如下:http://www.demodashi.com/demo/11608.html 前记 其实想写这个关于无限轮播的记录已经很久很久了,只是没什么时间,这只是一个借口,正如:时间就像海绵, ...

  8. SVN学习(一)——SVN 检出文件步骤、图标显示及含义

    May, I come... 1. 创建一个目录用来存放检出得到的文件,例如MyCRM 2. 直接进入目录MyCRM,点右键 3. 可以看到检出得到的文件 此时文件图标上没有任何标识.可能你会想到通过 ...

  9. Eclipse Mylyn成为顶级项目

    http://www.infoq.com/cn/news/2010/09/eclipse-mylyn/ 作为应用程序的生命周期管理工具,Eclipse Mylyn项目已经被提升为顶级的Eclipse项 ...

  10. Android平台Native开发与JNI机制详解

    源文链接: http://mysuperbaby.iteye.com/blog/915425 一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这 ...