mysql数据库字符处理函数

1. 

Mysql 处理字符串函数:

操作的str为字符串 查询的位置为字节数  str为汉字 查询的位置为汉字的个数

|*****************************************************************************|

Left(str,length);从左边取值

Select Left(‘坚持不懈’,2) as test; 只会取出来’坚持’;  2个汉字

Select left(‘word’,2)as test;只会取出来’wo’;   2字节

Str为数据表中的字段时不加’’ 

eg: select left(word,2) as test from mytest; wordmytest数据表中的字段名称

right(str,length);从字符串右边取值,用法如left

substring(str, pos); substring(str, pos, len):从第pos个位置取值,或者取len长度的值

select substr('你好中国家',-3) as test;取出来的是’中国家’ 倒数

select substr('你好中国家',-3,2) as test;取出来的是’中国’

select substr('你好中国家',2) as test;取出来的是’好中国家’

select substr('nhzgj',2,3) as test;取出来的是’hzg’

Pos可以为负值,但是len不能为负数

Substring_index(str,delim,count):

Str为截取的字符串 delim为截取的字符()  count为字符的位置

Delim为空得到的为空 delim的字符()不在str中查询出来为str本身 eg

SELECT SUBSTRING_INDEX('my.123.ddf.e','.',1);取出来的是:my 取出来第一个.之前的字符

SELECT SUBSTRING_INDEX('my.123.ddf.e','.',-1);:取出来的是:e 取出来最后一个.之后的字符

SELECT SUBSTRING_INDEX('my.123.ddf.e','456',1);取出来的是:my.123.ddf.e

如果要取来中间的某个字符(),可以嵌套使用,如下:eg:

SELECT SUBSTRING_INDEX(substring_index('my.123.ddf.e','.',2),'.',-1);取出来的是:123

ASCII(str):返回str对应的ascii码值 eg:

Select ascii(‘a’) as test; 取出来的是97

CHAR(N,...):

n个参数作为整数,并将这些整数的ascii码组成一个字符串返回,NULL被自动跳过

Eg:select char(77,121,NULL,83,81,NULL)as test; 取出来的是MySQ NULL未被取出

CONCAT(str1,str2,...):

n个字符串连接到一块,如果参数含有NULL,则返回NULL,数字被转换为等价的字符串

Egselect CONCAT('a','b',110,'b') as test; 取出来的是:ab110b

   select CONCAT('a','b',null,'b') as test;参数含有一个NULL,返回NULL

LENGTH(str):

返回字符串的长度

Egselect length('test')as test; 取出来为3

LOCATE(substr,str)  LOCATE(substr,str,pos)  POSITION(substr in str)

返回子串substr在字符串str中的位置  pos为从第几个字符开始查找,失败返回0

Egselect locate('test','mytest')as test;返回值为3

select locate('test','mytest',2)as test;返回值为3

select locate('詹姆斯','我是詹姆斯')as test;返回值为3

select locate('test','mytest',4)as test;返回值为0

select POSITION('test'in'mytest')as test;返回值为3

INSTR(str,substr)

返回子串substr在字符串str中的位置 与上边的只是参数的位置相反

Eg:select instr('我是詹姆斯','詹姆斯')as test;返回值为3

LPAD(str,len,padstr)

返回字符串str,长度为len,str长度大于len也是返回len长度,str长度不够则从padstr中补充长度,padstr长度不够补充,则再取一次,直到长度达到len为止。

Eg:select LPAD('姆斯',1,'我是詹三')as test;返回值为姆

select LPAD('姆斯',2,'我是詹三')as test;返回值为:姆斯

select LPAD('姆斯',5,'我是詹三')as test;返回值为:我是詹姆斯

select LPAD('姆斯',13,'我是詹三')as test;返回值为:我是詹三我是詹三我是詹姆斯

LTRIM(str)   RTRIM(str)

返回去除掉前边和后边含有的空格后的字符串;

Eg:select ltrim(' 詹姆斯');返回詹姆斯,除掉了空格

  select rtrim('詹姆斯   ') as test ;返回詹姆斯,除掉了空格

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)  

TRIM ( [ [位置] [要移除的字串] FROM ] 字串): [位置] 的可能值为 LEADING (起头), TRAILING (结尾), or BOTH (起头及结尾)。 这个函数将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。

Egselect trim(leading 'a' from 'aaabbbaa') as test ;返回值为bbbaa

    select trim(trailing 'a' from 'aaabbbaa') as test ;返回值为aaabb

select trim(both 'a' from 'aaabbbaa') as test ;返回值为bbb

select trim('  aaab bbaa ') as test ;返回值为aaa bbaa

SOUNDEX(str)

返回一个同音字符串

Eg:select soundex('world')as test ;返回值为W643

SPACE(N)

返回n个空格组成的字符串

Eg:select space(5)as test ;返回值为’     ’

REPLACE(str,from_str,to_str)  

返回字符串str,其字符串from_str的所有出现由字符串to_str代替

Eg:select replace('www.baidu.com','w','W')as test;返回值为WWW.baidu.com

REPEAT(str,count)  

返回由重复count次的字符串str组成的一个字符串如果count <= 0,返回一个空字符串.如果strcountNULL,返回NULL

Eg:select repeat('nba',NULL)as test;返回值为NULL

select repeat('nba',0)as test;返回值为’’空

select repeat('nba',2)as test;返回值为nabnba

REVERSE(str)  

返回颠倒字符顺序的字符串str

Eg:select reverse('nba')as test;返回值为abn

INSERT(str,pos,len,newstr)  

返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替  

Eg:select insert('www.baidu.com',5,5,'apple')as test;返回值为www.apple.com

ELT(N,str1,str2,str3,...)  

如果N= 1,返回str1,如果N= 2,返回str2,如果N小于1或大于参数个数,返回NULL

Eg:select elt(2,'n','b','a','n')as test;返回值为b

  select elt(6,'n','b','a','n')as test;返回值为NULL

FIELD(str,str1,str2,str3,...)  

返回strstr1, str2, str3, ...清单的索引,如果str没找到,返回0,FIELD()ELT()反运算

Eg:select field('b','n','b','a','n')as test;返回值为2

select field('x','n','b','a','n')as test;返回值为0

FIND_IN_SET(str,strlist)  

如果字符串str在由N子串组成的表strlist之中,返回一个1N的值.一个字符串表是被“,”分隔的子串组成的一个字符串.如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0.如果任何一个参数是NULL,返回NULL.如果第一个参数包含一个“,”,该函数将工作不正常(自己的版本测试返回值为0,可能版本问题)

Eg:select FIND_IN_SET('nba','n,b,a,nba')as test;返回值为4

select FIND_IN_SET('nb','n,b,a,nba')as test;返回值为0

select FIND_IN_SET('b','')as test;返回值为0

select FIND_IN_SET(null,'n,b,a,nba')as test;返回值为NULL

select FIND_IN_SET('b',null)as test;返回值为NULL

select FIND_IN_SET('b,a','n,b,a,nba')as test;返回值为0

MAKE_SET(bits,str1,str2,...)  

返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在bits集合中的的字符串组成,str1, str2, ...中的NULL串不添加到结果中

Eg:select make_SET(7,'n','b','a','nba')as test;返回值为n,b,a

  select make_SET(7,'n',null,'b','a','nba')as test;返回值为n,b

select make_SET(1|4,'n','x','b','a','nba')as test;返回值为n,b

  计算方式7的二进制0111,反过来1110 则取前三个

1|4:0001|0100=0101 反过来1010 1 3 位!

EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) 

bits排列字符串集,只有当位等于1时插入字串on,否则插入off(separator默认值",",number_of_bits参数使用时长度不足补0而过长截断)   

bits,传入的数值

on,位值为1的时候返回的字符串

off,位值为0的时候返回的字符串

separator 分隔符

number_of_bits 总位数

计算方式如上

Eg:select EXPORT_SET(4,'n','x',',',4)as test;返回值为xxnx

LCASE(str)   LOWER(str)   UCASE(str)

返回字符串str 大小写互换

Eg:select LOWER('ABCDEFG');返回值为abcdefg

select LCASE('ABCDEFG');返回值为abcdefg

select UCASE('abedFcde');返回值为ABEDFCDE

|*****************************************************************************|

   

猜你喜欢

转载自blog.csdn.net/linuxzhuxiaodi/article/details/78479059