day008--mysql中的字符串函数

我们都知道,日常生活中使用得最多的就是字符串,比方说打招呼‘你好’,聊天交流等。在数据表中也有许多的字符串数据存在,比方说用户名等,但是字符串函数不仅能够处理字符串数据,其他的数据也能够处理,如整型数据等。现在就让我们去认识字符串函数的相应用法,及其为我们处理数据时带来的便利与作用。  

目录

ascii函数

upper函数(ucase函数)

lower函数(lcase函数) 

​编辑lpad函数

rpad函数

concat函数

自连接

内连接

concat_ws函数

left函数

right函数

insert函数

replace函数

 char_length函数

 length函数

trim函数 

trim(str)

ltrim(str) 

rtrim(str) 

trim(s from str)

trim(leading  s from str)方法

trim(trailing  s from str)方法

repeat函数

space函数

strcmp函数

substr函数

locate函数

elt函数

field函数

find_in_set函数

 reverse函数

nullif函数


ascii函数

ASCII函数主要用于将我们输入的字母转换成ASCII表中对应的ASCII码值,如a的ASCII码值为97,A的ASCII码值为65。如果我们输入的不是一个字母,而是一串字符串时,这个时候ASCII函数就会选取开头的第一个字母来返回该字母对应的ASCII码值:

upper函数(ucase函数)

upper(ucase)函数用于将我们输入的字符全部转换成大写字母:

lower函数(lcase函数) 

lower函数为小写字母函数,可以将我们输入凡是大写的字符都转换成小写字母:

lpad函数

lpad函数为left  pad的缩写。

pad有填充,衬垫的意思,所以lpad就是向左填充,因此lapd函数也叫右对齐函数---不能因为lpad里面有left就误以为是左对齐函数,而是从该函数的翻译处去记忆,向左填充就意味着我们的函数可以使我们的字符向右对齐,左边不够的地方用字符进行填充。

我们的lpad函数需要传入三个参数,lpad(str,length,pad)---表示我们的str在向右对齐时总长为length,当我们的str长度不足length时,左边就需要使用pad字符进行填充:

select name,sex, lpad(wages,5,'*') from containnull;

 如上我们想要查找工资在5位数的人,如果没有五位数的工资的话那么可以在工资前面补‘*’,缺几位数就填充几个‘*’。

rpad函数

rpad函数与lpad函数相反,为向左对齐函数,如果缺少相应的位数的话可以在右边补上字符:

select name,sex, rpad(wages,5,'*') from containnull;

concat函数

concat翻译为函数的意思,可以用于select查询语句时连接我们的查询,需要我们传入两个及两个以上的参数。

现在我们有一张表---表里面为《西游记》主要人物,现在我们想要查询出“×××受雇与×××”的数据,如:“唐僧受雇于如来佛祖”,“孙悟空受雇于唐僧”等,我们可以使用自连接,也可以使用内连接来实现。 

自连接

如下:

select concat(e.emp_name,'受雇于',m.emp_name)  from employee as e,employee as m where e.manager_id=m.emp_id; 

内连接

要使用内连接就需要使用到inner join  table  on 条件。如下:

select concat(e.emp_name,'受雇于',m.emp_name)  from employee as e join  employee as m on e.manager_id=m.emp_id; 

concat_ws函数

concat_ws函数与concat函数类似,但是有一点不同,就是concat_ws函数可以指定连接的字符,之前我们的concat函数只是简单的将我们写入的字符连接起来,如果我们想要连接的字符都是用特定的连接符连接,那么我们就可以使用concat_ws函数:

 如上,两个sql语句实现的效果一样。

left函数

使用left函数可以让我们选取指定字段下数据的左边前几位数据内容。left函数需要传入两个参数

left(str,len)

right函数

right和left函数作用相反,right函数获取的是右边的数据内容: 

insert函数

insert函数为插入函数,可以在字符串指定的索引位置开始到长度为len的位置终止,并在这个范围内替换并插入新的字符串,因此我们需要传入四个参数:insert(str,index,len,replaceStr):

replace函数

replace函数与insert函数类似,但是replace函数只需要传入三个参数replace(str,str1,str2);

如上我们可以看到传入的参数都是字符串类型的,而我们是str1字符串是包含于str字符串中的,如果在字符串str中找到了str1字符串,那么replace函数就会将该str1字符串修改为str2.。如果没有找到的话就不进行修改:

 char_length函数

char_length函数用于获取我们传入的字符串的长度,即使在ASCII表中一个中文占3个字符,也依旧会以一个字符来进行计数:

select char_length('abc'),char_length('你好,java');

 length函数

length函数与我们的char_length函数不同,它是按照ASCII码值来计数我们的字符长度,一个中文就是3个字符占位:

select length('abc'),length('你好,java');

trim函数 

trim函数可以让我们去掉该数据前后不想要的空格或者是字符。trim函数有多个重载方法:

trim(str)

trim(str)方法可以去掉数据前后的空格:

ltrim(str) 

ltrim(str) 用于当我们只想去掉左边的空格时使用的方法: 

如上可能看得不大清楚,我们可以使用concat函数来连接字符串:

select  concat('*',ltrim(' hi  '),'*');

 如上,我们左边的空格给去掉了,于是‘*’号就与我们的字符紧贴在一起,而右边的空格没有去掉。

rtrim(str) 

与ltrim(str)刚刚好相反,去掉的是右边的空格,而左边的空格保留:

 select  concat('*',rtrim(' hi  '),'*');

trim(s from str)

在上面的三个trim方法中都是用于去掉空格的,现在我们来指定特定的字符及字符串。可以使用trim(s  from str)方法: 

 select name,sex,trim(00  from wages) from containnull;

从上图我们可以发现,当我们只想要去掉00时,却去掉的是该字段里面的所有数据含有0的部分,不管是0000,还是000。显然,这并不是我们想要的,因此不要忘记在我们的s那里加上引号:

 select name,sex,trim( '00' from wages) from containnull;

trim(leading  s from str)方法

trim(leading  s from str)是为了解决当我们只想要去掉一边的字符,而想要留住另外一边的字符时使用的方法,该方法可以去掉左边的字符,但是不能去掉右边相同的字符或字符串:

 select trim(leading 'she' from 'she is beautiful,yes she');

trim(trailing  s from str)方法

trim(trailing   s from str)方法用于去掉右边的字符或字符串:

select trim(trailing  'she' from 'she is beautiful,yes she');

repeat函数

repeat函数顾名思义,就是返回该函数里面的字符的n次数目,因此里面需要传入两个参数

repeat(str,num):

space函数

space有空格的意思,因此space函数可以用来打印空格:

 select length(space(5));

因为我们的空格用肉眼是看不到的,因此我们可以使用获取字符长度的length函数来返回里面的字符。

strcmp函数

strcmp:string  compare的缩写,可以用于两个字符串之间的比较,比较的依旧就是一个一个字母的ASCII码值大小比较,如果第一个字母一样就接着比第二个。因此我们的strcmp函数形式为:

strcmp(s1,s2)-----如果s1小于s2,那么结果返回-1;s1>s2→1;s1=s2→0:

select strcmp('b','a'),strcmp('a','b'),strcmp('a','a');

substr函数

substr函数有点像我们java中的subString函数,用于字符串的切割,可以在字符串str指定的索引位置index开始选取长度为len的字符或字符串,形式为substr(str,index,len):

locate函数

locate函数可以获取到当前字符或字符串在该父字符串中首次出现的位置,形如locate(s1,s2):

elt函数

elt函数用于返回我们指定的索引位置的字符或字符串,形如elt(m,s1,s2,s3):

select elt(3,'hi','how','are','you');

field函数

filed函数有点与locate函数类似,都是返回该字符或字符串在指定的范围里面首次出现的位置,但是filed函数可以传入多个字符串参数,而locate函数只能传入两个字符串参数:

 select field('mei','gong','zhong','mei');

find_in_set函数

find_in_set函数可以返回我们指定字符或字符串在父字符串中的位置,find_in_set函数形如find_in_set(s,'s1,s2,s3'),我们可以看到父字符串为一个以逗号分隔的字符串。一般的应用场景就是将我们的表格中的id当成字符串进行处理时会用到:

 select find_in_set('mei','gong,zhong,zhong,mei');

 reverse函数

reverse函数用于反转我们的字符串: 

nullif函数

nullif函数用于判断两个字符或字符串是否相等,如果相等返回null,如果不相等则返回第一个字符或字符串:

select nullif('abc','abd'),nullif('abc','abc');

如果对于这些函数的使用还有些困惑的,请在评论区留言。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值