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; word为mytest数据表中的字段名称
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,数字被转换为等价的字符串
Eg:select CONCAT('a','b',110,'b') as test; 取出来的是:ab110b
select CONCAT('a','b',null,'b') as test;参数含有一个NULL,返回NULL
LENGTH(str):
返回字符串的长度
Eg:select length('test')as test; 取出来为3
LOCATE(substr,str) LOCATE(substr,str,pos) POSITION(substr in str)
返回子串substr在字符串str中的位置 pos为从第几个字符开始查找,失败返回0
Eg:select 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 (起头及结尾)。 这个函数将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。
Eg:select 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,返回一个空字符串.如果str或count是NULL,返回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,...)
返回str在str1, 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之中,返回一个1到N的值.一个字符串表是被“,”分隔的子串组成的一个字符串.如果第一个参数是一个常数字符串并且第二个参数是一种类型为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
|*****************************************************************************|