对比mysql学习oracle函数(一):oracle单行函数—字符函数

举报
yd_226342373 发表于 2021/05/20 00:47:45 2021/05/20
【摘要】 1、单行函数分类:一行记录,返回一个结果; 1)字符函数 注意:与mysql中函数用法不同的地方,我都用红色进行了标注。 大小写转换函数 -- 大写转小写函数 SQL> select lower('AbC') from dual; LOWER('ABC') ------------ abc SQL> select upper('abc') from ...

1、单行函数分类:一行记录,返回一个结果;

在这里插入图片描述

1)字符函数

注意:与mysql中函数用法不同的地方,我都用红色进行了标注。
在这里插入图片描述
大小写转换函数

-- 大写转小写函数
SQL> select lower('AbC') from dual;
 
LOWER('ABC')
------------
abc
 
SQL> select upper('abc') from dual;
 
UPPER('ABC')
------------
ABC
 
SQL> select initcap('aBc') from dual;
 
INITCAP('ABC')
--------------
Abc

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

字符串处理函数
① concat(str1,str2):用于进行两个字符串的拼接。

  • 与mysql中用法不太一样,mysql中的concat函数可以拼接多个字符串。
-- concat函数:这个与mysql中不太一样,mysql中concat函数可以连接多个字符串;
-- oracle中的concat函数只能连接两个字符串,||可以连接多个字符串;
SQL> select concat('齐天大圣','孙悟空') from dual;
 
CONCAT('齐天大圣','孙悟空')
---------------------------
齐天大圣孙悟空
 
SQL> select concat('齐天大圣','_','孙悟空') from dual;
 
select concat('齐天大圣','_','孙悟空') from dual
 
ORA-00909: 参数个数无效
 
SQL> select '齐天大圣'||'_'||'孙悟空' from dual;
 
'齐天大圣'||'_'||'孙悟空'
-------------------------
齐天大圣_孙悟空

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

② substr(str,start,[len]):从start位置开始截取字符串,len表示要截取的长度。

  • 没有指定len长度:表示从start开始起,截取到字符串末尾。
  • 指定了len长度:表示从start开始起,截取len个长度。
  • 字符串的截取索引下标,从1开始。
SQL> select substr('杨过爱上了小龙女',3) from dual;
 
SUBSTR('杨过爱上了小龙女',3)
----------------------------
爱上了小龙女
 
SQL> select substr('杨过爱上了小龙女',6,3) from dual;
 
SUBSTR('杨过爱上了小龙女',6,3)
------------------------------
小龙女

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

③ length(str):获取字符串的字符个数。

  • 与mysql中用法不太一样,mysql中的length函数表示获取的是字符串的字节个数。如果还是不太懂,可以下去查一下“字符”与“字节”的区别。
SQL> select length('abc') from dual;
 
LENGTH('ABC')
------------- 3
 
SQL> select length('abc中国') from dual; LENGTH('ABC中国')
----------------- 5
 
SQL> select length('abc-_-中国') from dual; LENGTH('ABC-_-中国')
-------------------- 8

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

④ instr(str,要查找的子串):返回子串第一次出现的索引,如果找不到,返回0;找到了返回该字串第一次出现的位置索引。

SQL> select instr('杨过爱上了小龙女','小龙女') from dual; INSTR('杨过爱上了小龙女','小龙
------------------------------ 6
 
SQL> select instr('杨过爱上了小龙女','小龙人') from dual; INSTR('杨过爱上了小龙女','小龙
------------------------------ 0
 
SQL> select instr('a爱上了aline','a') from dual; INSTR('A爱上了ALINE','A')
------------------------- 1

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

⑤ lpad(str,len,填充字符):用指定的字符,实现对字符串左填充指定长度(以“字节”计算字符串)。
⑥ rpad(str,len,填充字符):用指定的字符,实现对字符串右填充指定长度(以“字节”计算字符串)。

  • 与mysql中用法不太一样,mysql中的lpad/rpad函数表示以“字符”计算字符串。
SQL> select lpad('倚天屠龙记',20,'@') "lpad左填充" from dual;
 
lpad左填充
-------------------------
@@@@@@@@@@倚天屠龙记
 
SQL> select rpad('倚天屠龙记',20,'#') "lpad左填充" from dual;
 
lpad左填充
-------------------------
倚天屠龙记##########
 
SQL> select lpad('aaaaa',10,'*') "lpad左填充",rpad('aaaaa',10,'*') "rpad右填充" from dual;
 
lpad左填充 rpad右填充
SQL> select lpad('倚天屠龙记',10,'*') "lpad左填充" from dual;
 
lpad左填充
---------------
倚天屠龙记
 
SQL> select rpad('倚天屠龙记',10,'*') "rpad右填充" from dual;
 
rpad右填充
---------------
倚天屠龙记
---------- ----------

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

下面列出mysql中lpad和rpad的用法,仔细体会差别:
在这里插入图片描述
⑥ trim(str):去掉字符串前后的空格(不能去掉字符串中间的空格)。

-- 没有去掉空格以前,计算一下该字符串的长度;
SQL> select length('  哈哈 哈 ') from dual; LENGTH('哈哈哈')
---------------- 7
-- 使用trim函数,去掉字符串前后的空格;
SQL> select trim('  哈哈 哈 ') from dual;
 
TRIM('哈哈哈')
--------------
哈哈 哈
-- 计算去掉字符串前后的空格后,该字符串的长度;
SQL> select length(trim('  哈哈 哈 ')) from dual; LENGTH(TRIM('哈哈哈'))
---------------------- 4

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

⑦ replace(str,子串,另一个字符串):将字符串str中的字串,替换为另一个字符串。

SQL> select substr('18455683467',5,4) from dual;
 
SUBSTR('18455683467',5,4)
-------------------------
5683
 
SQL> select replace('18455683467',substr('18455683467',5,4),'****') from dual;
 
REPLACE('18455683467',SUBSTR('
------------------------------
1845****467
SQL> select replace('张无忌爱上了周芷若','周芷若','赵敏') from dual;
 
REPLACE('张无忌爱上了周芷若','
------------------------------
张无忌爱上了赵敏

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

文章来源: blog.csdn.net,作者:数据分析与统计学之美,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41261833/article/details/103554720

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。