数据库内置函数——关于字符串的操作

来源:互联网 发布:js 判断手机号码 编辑:程序博客网 时间:2024/06/05 08:40

在oracle数据库中,有很多内置函数,这些内置函数可以帮助数据库管理员(或者程序员)能够快速提升代码编写能力,减少复杂逻辑而所消耗的大量时间,本章主要叙述的是内置函数一个分支-字符串
(1) 链接函数1-concat()
该函数主要格式如下所示:

concat(a,b)

代表a与b连接并且输入,输出到一个字段所在的列中,举例如下:(dual是伪表,该伪表不带有任何数据,也就是说是一个“空表”)

select concat('大家好',',我是刘明君') from dual

(2)连接函数2——‘||’
concat()函数虽然前期到连接作用,但是有一定的局限性,只能连接两个函数,不能连接多个函数,那么该函数很友好的解决了该问题,格式如下所示:

字符串1:字符串2:字符串3……………………

那么在数据库sql编译界面中举例如下:

select '张三'||'1989-01-01'||'23' from dual

(3) length()求字符串的长度
该函数就是求一下当前字符串的长度,其格式如下所示:

length(char||varchar2);

虽然该函数很快解决问题,但是他也有一定的局限性,就是定长的char类型和不定长的varchar2类型,那么,我们可以测试如下,首先先建立表,都存储的是姓名,区别是数据类型不同。

create table o_c_v(  cname char(20),  vname varchar2(20))

然后我在都插入一样的名字,举例如下:

insert into o_c_v(cname,vname) values('张三','张三');

然后我再求出两个不同数据类型相同字符串的长度,代码如下:

select length(cname),length(vname) from o_c_v;

第一个输出的就是16,第二个输出就是2,那么第二个就是我所输入的实际汉字的长度,那么第一个是啥,按照我的理解,就是剩下的存储空间,(该现象我有点懵,望高人指点)。
(4)Upper()
该函数就是将里面的字符串的所有的字母都转化为大写,这个相信C#,JAVA,javaScrpt编程人员都会遇到过类似于函数,那么示例如下:

select UPPER('nihaO') from dual

输出结果就是“NIHAO”。
(5)lower()
该函数的作用就是将括号里面的字符串都转化成小写字母,示例如下:

select LOWER('NIHAO wojiushi') from dual

输出的结果就是“nihao wojiushi”;
(6)initcap()
该函数的主要功能就是将括号内字符串的每一个单词的首字母的大写,就是类似于编程语言的驼峰命名法,主要示例如下所示:

select INITCAP('nihao wojiushi') from dual

输出的结果就是”Nihao Wojiushi”;
(7)ltrim(char1,char2)
该函数的主要功能就是char1字符串从左向右遍历,只要每一个字符满足char2中任意一个字符就删除,直到char1某个字符在char2中没有为止。那么示例如下所示:

select ltrim('abcabcabchabcabcabc','abc') from dual

结果就是’habcabcabc’;
(8)rtrim(char1,char2)
该函数与上述的ltrim函数正好相反,该函数char1从右向左遍历,只要满足该字符在char2中也存在就删除,只要char1中遍历到不符合char2中任意一个字符,那么就停止,主要示例如下所示:

select rtrim('abcabcabchabcabcabc','abc') from dual

输出的结果就是’abcabcabch’。
(9)trim(char1 from char2)
该函数主要功能就是将左右两边同时遍历char2,只要满足每一个字符等于char1时就删除,直到不满足该条件为止,主要示例如下所示:

select trim('a' from 'abcabcabchabcabcabc') from dual

结果就是:’bcabcabchabcabcabc’。
(10)lpad(str1,i,char2)
该函数的主要功能就是左补位,过程就是str1从右到左开始计数,如果所记的数的结果大于i,就将余下的字符进行截取(截断舍弃),否则小于i,那么在不足的地方补char2字符,否则不进行任何操作,示例如下所示:

select lpad('nihao',10,' ') from dual

(11)rpad(str1,i,char2)
该函数也是与lpad函数正好相反,该函数的主要功能就是str1从左向右开始计数,主要所的的长度小于i就在右边补char2的值,如果大于i就把右边剩余的数进行截断。否则不做任何操作,示例如下所示:

select rpad('nihao',10,'1') from dual

(12)substr(str1,i,j)
该函数的主要功能就是截取str1的字串,i是从哪开始,j是截取的长度,主要示例如下所示:

select substr('jeetkundao',2,1) from dual

该函数执行的结果就是‘e’。
(13)instr(str1,str2.i,j)
该函数的主要功能就是str1中存在str2所在位置,i是从哪开始遍历,j是出现第几次,他们两默认值都是1.(在字符串遍历时从1开始遍历,与编程语言的遍历方式不同),示例如下所示:

select instr('inlllininin','in',1,2) from dual

所运行的结果是6