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 是相等的.
字符串这章有很多函数, 基本跟别的语言差不多用法.
最新文章
- [从产品角度学EXCEL 00]-为什么要关注EXCEL的本质
- 写一个js向左滑动删除 交互特效的插件——Html5 touchmove
- es6学习笔记一数组(下)
- IE6中使用通用选择器模拟子选择器效果
- 关于Matrix的深入理解(对应值的功能)
- IIS限制ip访问
- 【USACO】pprime
- ios app的真机调试与发布配置
- What is a Windows USB device path and how is it formatted?
- ***RESTful API 设计指南(阮一峰)
- 【HDOJ】【2089】不要62
- 全面剖析Redis Cluster原理和应用
- MongoDB 如何实现备份压缩
- MySQL 性能优化的最佳20多条经验分享(收藏)
- C语言的main函数到底该怎么写
- SOA的理解
- nginx作为web服务以及nginx.conf详解
- poj 2406 求字符串中重复子串的个数
- 爬取w3c课程—Urllib库使用
- telnet测试端口的使用
热门文章
- Linux Hook 笔记
- 【java】File的使用:将字符串写出到本地文件,大小0kb的原因
- kettle新手教程
- Jedis(Java+Redis) Pool的使用
- 转:解决 java.util.MissingResourceException: Can&#39;t find bundle for base name com...config, locale zh_CN 错误
- SVN服务的部署及使用
- 虚拟机主流软件Vmware安装
- MS project 使用小技巧收集
- 转:http2基本中文翻译
- webstorm 破解方式