Oracle入门学习系列笔记(三)之字符串操作

7 篇文章 0 订阅
6 篇文章 0 订阅

Oracle入门学习系列笔记(三)之字符串操作


说明: 本文档为本人学习Oracle过程中整理的相关笔记,供大家学习时参考,如有不妥之处,请大家指正

介绍

Oracle中表示字符串常用的两种类型为CHAR和VARCHAR2,本文介绍的是这两种类型的相关特性及相关函数操作

ORACLR字符串
分类
常用函数
CHAR
VARCHAR2
LONG
CLOB
CONCAT
LENGTH
UPPER,LOWER,INITCAP
TRIM,LTRIM,RTRIM
LPAD,RPAD
SUBSTR
INSTR

CHAR 和 VARCHAR2

类型
  • CHAR 存放定长的字符,当存储的字符串的实际长度没有达到定义的长度时,会自动右补空格
  • VARCHAR2 存放变长的字符串,以实际存储的长度占用字节数
  • 例如:在数据库中保存 ‘JACKDAVID’ 字符串
    • CHAR(50): 9个字母,补齐41个空格,实际占用50
    • VARCHAR2(100):10个字母,实际占用10
存储编码
  • 默认的存储单位是字节,也可以指定为字符

    • CHAR(10),等价于CHAR(10 BYTE)
    • 指定单位为字符:CHAR(10 CHAR),占用20个字节
    • VARCHAR2(10),等价于VARCHAR2(10 BYTE)
    • 指定单位为字符:VARCHAR2(10 CHAR),占用20个字节
  • 每个英文字符占用一个字节,每个中文字符按照编码方式的不同,占用2-4个字节

    • GBK:2个字节
    • UTF-8:2-4个字节
最大长度
  • CHAR 最大取值为2000字节

    • 最多保存2000个英文字符,1000个汉字(GBK)
  • VARCHAR2 最大取值为4000字节

    • 最多保存4000个英文字符,2000个汉字(GBK)
  • CHAR 可以不指定长度,默认为1,VARCHAR2 必须指定长度

LONG和CLOB类型

LONG类型
  • LONG 是VARCHAR2 的加长版,存储变长字符串,最多可以存储2GB的字符串数据
  • LONG 有诸多限制:
    • 每个表中只能有一个LONG类型的列
    • 不能作为主键
    • 不能建立索引
    • 不能出现在查询条件中
CLOB类型
  • 存储定长或变长字符串,最多可以存储4GB的字符串数据
  • ORACLE 建议开发中使用CLOB代替LONG类型

字符串函数

CONCAT和 “||”
  • CONCAT(char1,char2)

    • 返回两个字符串连接后的结果,两个参数char1,char2是要连接的两个字符串,可以是数据库中的列名称,也可以是实际值
  • 等价操作 :连接操作符

  • 如果char1和char2任何一个为NULL,相当于连接了一个空格

  • 例如: 如下的两条语句的执行结果是一样的

select concat(‘Hello’,’ World!’) AS MSG from dual;

select ‘Hello’ || ’ World!’ AS MSG from dual;

在这里插入图片描述

LENGTH
  • LENGTH(CHAR)

    • 返回字符串的长度
  • 如果字符串类型是VARCHAR2,返回字符串的实际长度,如果字符类型是CHAR,长度还要包括后补的空格

  • 例如:

select PHONE_NO,LENGTH(PHONE_NO) from DAVID.STU_INF;
UPPER、LOWER和INITCAP
  • 大小写转换函数,用来转换字符的大小写

  • UPPER(CHAR) 用于将字符串转为大写形式

  • LOWER(CHAR) 用于将字符串转为小写形式

  • INITCAT(CHAR) 用于将字符串中每个单词的首字符大写,其他字符小写,单词之间用空格和非字母字符分隔

  • 如果输入的参数是NULL值,仍然返回NULL值

  • 例如: 如下的SQL脚本的执行结果


SELECT UPPER('hello world') AS UP,LOWER('HELLO WORLD') AS LO,INITCAP('hello world') AS INI from dual;

在这里插入图片描述

TRIM,LTRIM,RTRIM
  • 作用:截去字符串

  • 语法形式:

    • TRIM (c2 from c1) 从c1的前后端截去c2
    • LTRIM (c1,[c2]) 从c1的左边截去c2
    • RTRIM(c1,[c2]) 从c1的右边截去c2
  • 例如: 执行结果如下图所示

select trim('d' from 'david') as t1,ltrim('david','d') as t2,rtrim('david','d') as t3 from dual;

在这里插入图片描述

LPAD、RPAD
  • 补位函数,用于在字符串char1的左端或者右端用char2补足到n位,char2可重复多次

  • LPAD(char1,n,char2) 左补位函数

  • RPAD(char1,n,char2) 右补位函数

  • 例如: 执行下面的两个函数的结果如下图所示


SELECT LPAD(FEE,8,'$') FROM DAVID.STU_INF;
SELECT RPAD(FEE,8,'0') FROM DAVID.STU_INF;

在这里插入图片描述

SUBSTR
  • SUBSTR(char,[m[,n]])
  • 用于获取字符串的子串,返回char中从m位开始取n个字符
  • 如果m=0,则从首字符开始,如果m取负数,则从尾部开始
  • 如果没有设置n,或者n的长度超过了char的长度,则取到字符串的末尾为止
  • 字符串的首位下标从1开始
  • 例如: 执行的结果如下图

SELECT SUBSTR('DAVID IS A VERY SMART MAN',7,15) AS STR FROM DUAL;

在这里插入图片描述

INSTR
  • INSTR(char1,char2[,n[,m]])

  • 返回子串char2在源字符串char1中的位置

  • 参数:

    • 从n的位置开始搜索,没有指定n,从第一个字符开始搜索
    • m用于指定子串的第m次出现次数,如果不指定取值1
    • 如果在char1中没有找到子串char2,返回0
  • 例如: 执行的结果如下图


SELECT INSTR('DAVID IS A VERY SMART MAN','SMART')  AS STR FROM DUAL;

在这里插入图片描述


如果你觉得本笔记对你有帮助,请扫码给予支持,金额随意

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_David

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值