您的位置:首页 > 数据库 > MySQL

SQL学习(4)——MySQL数据库常用的函数--常见的字符串函数

2017-06-02 17:00 585 查看
四、常见的字符串函数

<1>LENGTH(str):

求字符串长度(以字节为单位),返回字符串str的字节长度。

注:在GBK编码中,一个中文字符为2个字节。UTF-8编码中,一个中文字符为3个字节,一个英文字符为1个字节

例:

*SELECT LENGTH('玩s')*
返回结果为4。


<2>CHAR_LENGTH(str):

获取字符串的长度,单位为字符。

例:

*SELECT CHAR_LENGTH('玩s')*
返回结果为2。


<3>FORMAT(X,D):

以四舍五入的方式保留X小数点的后D位,返回结果以字符串的形式。

注:若D为0,则返回结果不包含小数部分。

例:

*SELECT FORMAT(20.45684,3)*
返回结果:20.457


*SELECT FORMAT(20.45684,0)*
返回结果:20


<4>INSERT(str,pos,len,newstr):

从原str的pos位置开始,用字符串newstr来替换,替换长度为len。

例:

*SELECT INSERT('study',1,5,'learn');*
返回结果:learn


*SELECT INSERT('study',5,1,'learn');*
返回结果:studlearn


下面我们来看一个有意思的情况

*SELECT INSERT('study',6,1,'learn');*


这个返回结果会是什么呢?按照我们的想法应该是:study

而真正的结果如下:



总结:若pos的值>(strlength+1),此时返回str,若pos=strlength,则返回str+newstr。若len超过可替换的长度,则从位置pos加上newstr。若四个参数中有一个null,则返回null。

<5>INSTR(str,substr):

返回字符串str中首次出现子字符串substr的位置。

例:

*SELECT INSTR('learning','ing');*
返回结果:6


<6>LEFT/RIGHT:字符串截取

LEFT(str,len):左截取,返回字符串str中从左边开始,前len个字符。

RIGTH(str,len):右截取,返回字符串str中从右边开始,前len个字符。

例:

*SELECT LEFT('study',3)*
返回结果:stu


<7>强大的TRIM()函数。

(1)、LTRIM(str):去掉左边的空格。

*SELECT LTRIM(' study')*
返回结果:study


(2)、RTRIM(str):去掉右边的空格。

*SELECT RTRIM('study ')*
返回结果:study


(3)、TRIM(str): 将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函数共同的结果。

SELECT trim(' study ')
返回结果:study


(4)、ALLTRIM(str):将字串左右边两边的空格移除。

(5)、trim函数去除指定的开头字符

select trim(leading 'x' from 'xstudy')
返回结果:study


(6)、trim函数去除指定的结尾字符

select trim(trailing 'o' from 'studyo')
返回结果:study


(7)、trim函数去除指定的首部和尾部字符

select trim(both 'o' from 'ostudyo')
返回结果:study


(8)、默认情况下,trim函数会去除首部和尾部,被指定的字符

select trim('o from 'ostudyo')
返回结果:study


(9)、如果没有指定被移除的字符,则会默认去除首部和尾部的空格

select trim(' study ')
返回结果:study


<8>、STRCMP(expr1,expr2):判断字符串是否相等

若相等返回0,若expr1 < expr2返回-1,其余情况返回1。

注:此处字符串的大小根据ANSI编码来比较。

SELECT STRCMP(30,30)
返回结果:0


<9>、concat:字符串拼接

CONCAT(str1,str2,…):返回结果为将str1,str2…拼接之后产生的字符串。若任何一个为null,则返回null。

SELECT CONCAT('I','like','learning')
返回结果:Ilikelearning
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: