数据库-Oracle学习笔记(4)

Oracle字符串操作

字符串类型:char类型和varchar2类型

char类型

  • char类型存放的是定长字符,存不满补空格;
  • char最大取值是2000字节,也就是最多保存2000个英文字符,1000个汉字;
  • char可以不指定长度,默认为1,例如loc char等价于loc char(1)。

varchar2类型

  • varchar2类型存放的是变长字符,存多少占用多少;
  • varchar2最大取值是4000字节,也就是最多保存4000个英文字符,2000个汉字;
  • varchar2必须指定长度,如果loc varchar2这样写是错误的。

字符串函数

concat和 || 函数

  • 语法1:concat(str1,str2),将两个字符串进行连接
    concat(‘a’,’b’) -->’ab’
  select * from emp;      查询表中所有列
  select ename, sal from emp;  查询表中ename列,和sal列
  select concat(ename, '的工资是:')  from emp;   -->SMITH的工资是:
  SMITH的工资是:    sal    ---> SMITH的工资是800
  select concat(concat(ename,'的工资是:'), sal) from emp;
  • 语法2: || 等价于concat函数,str1 || str2,将str1和str2连在一起
  select  ename || '的工资是:' || sal   from emp;
  select ename || '的提成是:' || comm from emp;
  强调:使用||或者concat将str1和str2进行连接,如果str1或者str2任何一个是null,相当于连接了一个空格

length函数:求字符串的长度

  • 语法:length(str) -->求str的长度
  • 说明:str的类型如果是varchar2类型,求出的长度是字符串的实际长度;如果str的类型是char类型,
    求出的长度还要包括后补的空格。
  name char(10)     ‘abc       ’  length(name)->10
  name varchar2(10)  ‘abc’         length(name)->3
  select ename, length(ename) from emp;
  create table u1(
      name char(10),
      pwd  varchar2(10)
  );
  insert into u1 values('abc','abc');
  select length(name), length(pwd) from u1;    10  3

upper、lower、initcap函数

  • 功能:大小写转换函数,用于转换字符的大小写
  • 语法:upper(str)用于将字符转换为大写形式
    lower(str)用于将字符转换为小写形式
    initcap(str)用于将字符串中每个单词的首字母大写
  select ename, upper(ename), lower(ename), initcap(ename) from emp;

trim、ltrim、rtrim函数

  • 功能1:去掉空格
  • 语法:trim(str)用于去掉str两边空格
    ltrim(str)用于去掉str左边空格
    rtrim(str)用于去掉str右边空格
  create table u2(
     id number(4),
     name char(10)
  );
  insert into u2 values(1001, 'abcd');
  insert into u2 values(1002, '  bb  ');
  select name, trim(name) from u2;
  select name || id, rtrim(name) || id  from u2;
  • 功能2:截掉字符串
  • 语法:trim(c2 from c1) 从c1的前后(两边)截掉c2
    ltrim(c1, c2) 从c1的左边截掉c2
    rtrim(c1,c2) 从c1的右边截掉c2
  insert into u2 values(1003, trim('a' from 'aba'));    1003  b
  insert into u2 values(1004, ltrim('aba', 'a'));     1004  ba

lpad rpad函数:补位函数

  • 语法:lpad(str1, n, str2)左补位函数,在字符串str1的左边用str2补位,补足到 n位。
    rpad(str1, n, str2)右补位函数,在字符串str1的右边用str2补位,补足到 n位。
    (不是补n位)
  select ename, sal, lpad(sal, 6, '¥') from emp;

substr函数 – 截取函数

  • 语法:substr(str, m, n)截取字符串str中从m开始,取n个字符的内容。字符串的首位计算从1开始。
  • 说明:如果m=0,则从首字符开始;0=1;
    如果m的取值为负数,从尾部开始,倒着数 -1 -2 -3;
    如果n没有设置值,或者n的长度超过了str的长度,则取值到str字符串的末尾为止。
  insert into u2 values(1, substr('abcdefgh', 3, 4));    1  cdef
  insert into u2 values(2, substr('abcdefgh', 0, 4));    2  abcd
  insert into u2 values(3, substr('abcdefgh', -2, 1));   3  g
  insert into u2 values(4, substr('abcdefgh', 2, 100));  4  bcdefgh

instr函数:查找字符串的所在位置

  • 语法1:instr(str1, str2, n, m) 查找字符串str2在源字符串str1中的位置,从n的位置开始搜索,m表示第m次出现str2的位置。
    练习:‘abcdabcaerga’ a 3 2
    查找a在’abcdabcaerga’出现的位置
    从3的位置开始搜索,第2次出现a的位置就是要查找出的位置
  insert into u2(id) values(instr('abcdabcaerga', 'a', 3, 2));    8
  • 语法2:instr(str1, str2) 如果n和m不写,默认从1的位置开始搜索,第1次出现str2的位置。
  insert into u2(id) values(instr('abcdabcaerga', 'a'));  1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值