字符型简介

固定长度字符串-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. Win10隐藏托盘图标-注册表

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer NoTrayItemsDisplay(类型: ...

  2. 2024 (ICPC) Jiangxi Provincial Contest -- Official Contest

    L. Campus 1.首先考虑时间复杂度,因为最多只会有2*k的时间点,所以我们采取的策略是,对这每个时刻,判断有多少扇门是开的,并且考虑这些门到其他点的最短路之和. 2.输入完数据以后,使用dij ...

  3. 云备份技术解析:云容灾 CT-CDR 关键技术介绍

    本文分享自天翼云开发者社区<云备份技术解析:云容灾 CT-CDR 关键技术介绍>,作者:沈****军 1.CDP+存储快照,实现秒级RPO (1)CDP技术:云容灾CT-CDR(Cloud ...

  4. Rocketmq 如何保证消息的可用性/可靠性/不丢失呢 ?

    如何保证消息的可用性/可靠性/不丢失呢 ? 消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段.存储阶段.消费阶段 生产阶段 在生产阶段,主要通过请求确认机制,来保证消息的可靠传递 1.同 ...

  5. LVGL基础对象的框架、思维与概念,以及部分源码解析

    概念: Lvgl虽然是以C语言进行编程开发,但其中借鉴了CSS当中编程思想,引入了类与对象的概念,其中lvgl的基础单位为控件,等同于HTML5当中的标签. Lvgl当中的"类"是 ...

  6. 领域驱动的事实与谬误 一 DDD 与 MVC

    本文有以下几个目的: 让新手少交智商税,少浪费时间看一些软文. 普及一个基本概念:了解一项观点的提出年代和最初初衷,才能更好地掌握其精粹. 我想指出市场上一些误人子弟的软文. 首先说明:文中所说的谬误 ...

  7. 漏洞预警 | Apache NiFi信息泄露漏洞

    0x00 漏洞编号 CVE-2024-56512 0x01 危险等级 中危 0x02 漏洞概述 Apache NiFi是一个强大的.易于使用的数据集成平台,旨在自动化和管理数据流,尤其是在大数据环境中 ...

  8. 【BUG】.NET项目|未能加载文件或程序集“xxx”,或它的某一个依赖项。系统找不到指定的文件的通解

    出错代码: MSBuildWorkspace workspace = CreateWorkspace(); Solution solution = workspace.OpenSolutionAsyn ...

  9. SQL 日常练习 (十九)

    趁热打铁, 一波 SQL 继续带走 ~~ 虽然是假期, 但我也不想出去逛, 宅着也不想看书和思考人生, 除了做饭, 就更多对着电脑发呆. 时而看了下微信群, 初中小伙伴结合, 祝福寄语 和 随份子 都 ...

  10. Windows平台调试器原理与编写03.单步

    调试器原理与编写03.单步-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 单步 TF - 置位(置1 复位就是置0) 单步步入 -- 遇到call便入 单步步过 ...