字符型简介

固定长度字符串-char(n)

n代表字符串的长度,当实际长度不足时,利用空格在右端补齐,n的最大值不能大于2000。所以只要是固定长度的字符串,他的length(值)的长度总为n

varchar(n)

可变长度字符串,当实际长度不足时,不使用空格进行补充,同样长度也不许超出n。当作为列的数据类型时,最大长度不能大于4000

varchar2(n)

可变长度字符串,尽量使用varchar2(n)而非varchar(n),因为使用varchar2(n)可以获得Oracle向后兼容性的保证。当作为列的数据类型时,最大长度不能大于4000

varchar2(n)和char(n)的选择

char(n):占用空间大。但效率高。以空间换时间

varchar2(n):占用空间小,在不断调整长度时,会损耗效率

变量声明中的字符串类型

char(n),varchar(n),varchar2(n),都可用于声明变量。但是三者声明时,最大长度均为32767

declare s char(32767)

字符型处理

向左补全字符串-lpad()

lpad()用于向左补全字符串,格式化字符串。将字符串格式化为指定长度,有不足部分,则在左端填充特定字符,语法如下:

lpad(string,padded_length,[pad_string])

select lpad('1',4,'0') empplyee_no from dual

结果0001

如果原字符串长度已超过预期长度,也将从字符串左端进行截取

select lpad('12345',4,'0') empplyee_no from dual

结果1234

向右补全字符串-rpad()

select rpad('1',4,'*') empplyee_no from dual

结果1***

注意:当原始字符串长度大于预期长度时,rpad()同样是自左端截取字符串

select rpad('12345',4,'*') empplyee_no from dual

结果1234

返回字符串小写形式-lower()

返回字符串大写形式-upper()

单词首字符大写-initcap()

select initcap('like') new_word from dual

结果:Like

select initcap('LIKE') new_word from dual

结果:Like

无论使用全小写形式,还是全大写形式,都将返回首字符大写,其余字符小写的形式

initcap()是以单词为单位,而非整个字符串

select initcap('we all like bike') new_string from dual

结果:We All Like Bike

注意:只要是非单词字符都将作为单词的分隔符,

select initcap('we-all-like-bike') new_string from dual

结果:We-All-Like-Bike

返回字符串长度-length()

length()的参数不仅可以为字符串,还可以是其他类型

select length(123.45) len from dual

结果:6

length(’’),Oracle中将空字符串一律视为null,将null作为参数的函数都返回null

截取字符串-substr()

substr(string,start_index,length)

string指定原始字符串,start_index指定开始截取的位置,第三个参数指定截取的长度。

注意:Oracle中字符串的第一个字符的位置是1

select substr('123456789',2,3) sub_string from dual

结果:234

当没有指定第三个参数时,将从开始位置一直截取到末尾

获得字符串出现的位置-instr()

instr()用于返回子字符串在父字符串中出现的位置,如果为出现,返回0

select instr('132456789','56') position from dual

结果:5

select instr('132456789','56',7) position from dual

表示从‘123456789’的第7个字符开始搜索,结果为0

select instr('132456789','56',1,2) position from dual

第4个参数指定第几次获得子字符串才是真正要搜寻的结果。结果为0

删除字符串左侧空格-ltrim()

删除字符串右侧空格-rtrim()

删除字符串两侧空格-trim()

串联字符串-concat()

concat()只有2个参数,若要对多个字符串进行连接,则需要多个concat()嵌套

select concat(concat('hellow',hellow),world) nbew_str from dual

结果:hellow hellow world

翻译字符串-translate()

select translate('+-*','1+23-4*','abcdefghijklmnopqrstuvwxyz') trans from dual

翻译第一个字符串‘±’。过程:在第二个字符串寻找+,得到位置2,然后在第3个字符串中获得位置为2的字符b,接着翻译-和。最终结果:beg

反转字符串-reverse()

select reverse('abcdefgh') from dual

结果:hgfedcba

如果反转双字节字符,例如汉字,将返回乱码

Oracle中字符型级处理方法的更多相关文章

  1. Mysql查询语句中字符型字段不区分大小写解决方法

    项目中和前端联调的时候,发现Mysql查询语句中字符型字段值过滤是不区分大小写的,之前没有关注过这个设置,特意去网上看了下,原因是Mysql中“COLLATE”属性区分大小写,而该属性默认值为“utf ...

  2. Oracle中对列加密的方法

    Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...

  3. oracle中字符串连接用||

    oracle中字符串连接用|| create or replace procedure testIf(idid number) is v_name stu.name%type; v_age stu.a ...

  4. Oracle中的 UPDATE FROM 解决方法

    转:http://www.cnblogs.com/JasonLiao/archive/2009/12/23/1630895.html Oracle中的 UPDATE FROM 解决方法 在表的更新操作 ...

  5. oracle中的round()方法的用法

    [oracle中的round()方法的用法] Round( ) 函数 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 oracle一般常用于计算表空间内存还有多少空间 语法 ROUN ...

  6. Oracle数据库中字符型字段按数字排序

    今天在转换数据时,遇到了一个主键排序的问题.字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序. 但发现to_number总是报错,就想着里面应该是有字符存在.后来 ...

  7. Oracle中查询各种对象的方法小结

    --查看当前库中的所有表select * from all_tables a where a.table_name='INFOCODE_P20081'--查看表结构select * from all_ ...

  8. Oracle中字符串连接的实现方法

    1.和其他数据库系统类似,Oracle字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLServer中的加号“+”一样. 例如: SELECT '工号为'||FNumber||'的员工姓名为 ...

  9. C语言中字符型,整数型,浮点型在内存中如何存储

    ···void main() { unsigned char a = 97; printf("%p",&a); printf("%c,%d\n", a, ...

  10. Oracle中创建千万级大表归纳

    从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cn ...

随机推荐

  1. Lazarus信创之路:启程,自动升级程序

    相信国内做Delphi开发的不在少数,信创大趋势下,很多转Lazarus开发了.最近我也研究了一下,决定也转到这下面来,主要考虑:1.商业化方便,无版权纠纷:2.兼容Delphi语法,上手很快:3.原 ...

  2. CPU 和GPUskinning对比

    CPU: 比如广泛的设备兼容性,比如上面说的精确逻辑处理,比如可以根据距离对Skinning进行LOD(如近距离角色每秒30帧Skinning,远距离角色每秒15帧Skinning),比如多Pass渲 ...

  3. JVM 方法区是否会出现内存溢出?

    JVM 方法区是否会出现内存溢出? 方法区内存溢出的可能性 方法区是 JVM 内存中的一个重要组成部分,存储类的元信息.静态变量和运行时常量池等.尽管它是一个独立的内存区域,但如果内存使用过多,也可能 ...

  4. cglib 代理类 自己equals自己 返回false

    简单的cglib代理示例 普通的 Java 类 package cglib; public class UserService { public void saveUser(String userna ...

  5. krpano.js导出为模块方便vue等框架使用的问题

    作为一个全栈(干),前端commonjs amd 那些东西没有研究过,一直用es6内置的export和import(不香吗?).最近写一个全景项目,有一个krpano.js文件官网案例是标签引入,可我 ...

  6. 关于composer报错The openssl extension is required for SSL/TLS protection but is not available问题

    今天使用composer的时候得到了这个错误: The openssl extension is required for SSL/TLS protection but is not availabl ...

  7. AD 侦查-MSRPC Over SMB

    本文通过 Google 翻译 AD Recon – MSRPC Over SMB (135/139/445) 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 ...

  8. C#之BitConverter.ToInt16

    byte[] bytes = { 1,3 }; short s = BitConverter.ToInt16(bytes,0); Console.WriteLine(s); 从低位到高位填充: 000 ...

  9. C#程序的内存缓存

    C#程序可以使用IMemoryCache.IMemoryCache是.NET Core中内置的一个轻量级缓存实现,可以用于在内存中缓存数据,以提高应用程序的性能和响应速度.它支持通过键值对的方式缓存数 ...

  10. C#8.0,9.0,10.0常见新语法学习

    顶级语句 (1)一个项目最多只能有一个文件具有顶级语句,就是直接写代码,如果存在多个,则会报错, (2)如果顶级语句和Main共存,则只调用顶级语句 (3)如果没有顶级语句,则必须有Main 简化us ...