Oracle学习(4)

1、 Oracle字符串操作
1)字符串类型: char类型和varchar2类型

(1)char类型

char类型存放的是定长字符,存不满补空格;

char最大取值是2000字节,也就是最多保存2000个英文字符/1000个汉汉字。

char可以不指定长度,默认为1;例如loc char等价于loc char(1).

(2)varchar2类型

varchar2类型存放的是变长字符,存多少占用多少。

varchar2最大取值是4000字节,也就是最多保存4000个英文字符/2000个汉字。

varchar2必须指定长度,如果loc varchar2这样写是错误的。

2)字符串函数
(1)concat和|| 函数

语法1:concat(str1,str2)       将两个字符串进行连接

concat(‘a’,’b’)  ‘ab’

select * from emp;  查询emp表中的所有列
     select ename,sal from emp;  查询emp表中ename和sal列

ename ‘:’ sal   SMIYH:800    ALLEN:1600
     concat(ename,:)     ‘SMITH:’
        
select concat(ename,:) from emp;  √
     select concat(ename,’的工资是:) from emp;
     concat(ename,’的工资是:)   SMITH的工资是:
     select concat(concat(ename,’的工资是:),sal) from emp;     SMITH的工资是:800
     

语法2:||等价于concat函数,str1||str2,将str1和str2连在一起。
select ename || ‘的工资是:’ || sal from emp;
select ename || ‘的提成是:’ || comm from emp;
强调:使用||或者concat将str1和str2进行连接,如果str1或者str2任何一个是null,相当于连接了一个空格。

(2) length函数:求字符串的长度

语法:length(str)  求str的长度

说明:str的类型如果是varchar2类型,求出的长度是字符串的实际长度;
name char(10) ‘abc ‘ length(name)->10
如果str的类型是char的类型,求出的长度还要包括后补的空格。
name varchar2(10) ‘abc’ length(name)->3

select ename, length(ename) from emp;
显示名字和名字的长度

(3) upper、lower、initcap函数

功能:大小写转换函数,用于转换字符的大小写

语法:upper(str)用于将字符转换为 大写 形式

  lower(str)用于将字符转换为 小写 形式

  initcap(str)用于将字符串中,每个单词 的 首字母大写
select ename,upper(ename),lower(ename),initcap(ename) from emp;

(4) trim、ltrim、rtrim函数

功能1:去掉空格

语法:trim(str)用于去掉str 两边 的空格

  ltrim(str)用于去掉str 左边 的空格
  
  rtrim(str)用于去掉str 右边 的空格
create table u2(          insert into u2 values(1001,'abcd');
  id number(4),          insert into u2 values(1002,' bb '); 
  name char(10)         select name || id 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'));   b
insert into u2 values(1004,ltrim('aba','a'));       ba

(5) 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;

(6) 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

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

 语法1:instr(str1, str2, n, m)

查找字符串str2在源字符串str1中的位置,从n的位置开始搜索,

m表示第m次出现的位置。

‘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的位置开始搜索,第一次出现str2的位置。

insert into u2(id) values(instr('abcdabcaerga','a'));    1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值