MySQL常用函数之字符串函数

MySQL常用函数

1、ascii(str):返回字符串的第一个字符对应的字节码的第一个字节。字符串为空字符串时,返回0。字符串为null时,返回null。

eg:

SELECT ASCII('你好');#返回的是第一个字符对应的字节码的第一个字节。228
SELECT ASCII('helloworld');#104
SELECT ASCII('');#0

2、ord(str):如果字符串的第一个字符为单字节字符时,与函数ascii(String)一样
          如果不是单字节,如:UTF8的'中'为三个字节---返回值为第一个字节*256+第二个字节*256+第三个字节

3、conv(n,from_base,to_base),将from_base进制中的字符n转成to_base进制下的表示方式;

eg:

SELECT CONV('f',16,2);#16进制中的字符f转成2进制来表示。 1111
SELECT CONV('6f',16,2);#1101111

4、bin(n)  oct(n)   hex(n);
  将数值n转换成对应的二进制 八进制 和十六进制

  查看十进制数13的二进制,100的八进制  128的十六进制
  eg:

SELECT BIN(13),OCT(100),HEX(128);#1101 144 80

5、char(n...),返回多个ascii码组成的字符串

eg:

SELECT CHAR(104,101,108,108,111);#hello


6、concat(str1,str2...):将多个字符串拼接成一个字符串
            如果有一个参数为null,返回的就是null
练习:将hello 和kitty进行拼接
          将hello和null进行拼接

eg:

SELECT CONCAT('hello','kitty');#hellokitty
SELECT CONCAT('hello',NULL);#NULL

7、
length(str)/octet_length(str)  ---这两个函数返回的是默认字符集下的字符串的所有字节数
char_length(str)/character_length(str)  ---这两个函数返回的是字符串对应的字符长度
练习:统计下'no zuo no die'的字节长度
          统计下'上海自来水来自海上'的字节长度

eg:

SELECT LENGTH('no zuo no dei');#如果是汉字则乘以字节数  13
SELECT CHAR_LENGTH('上海自来水来自海上'); #9
SELECT OCTET_LENGTH('上海自来水来自海上');#如果是汉字则乘以字节数 27
SELECT CHARACTER_LENGTH('上海自来水来自海上'); #9

8、locate(substr,str)/position(substr in str)/instr(str,substr)

作用:返回substr在str第一次出现的位置。如果没有,返回0。

mysql> select locate('bar', 'foobarbar');  
  -> 4  
mysql> select locate('xbar', 'foobar');  
  -> 0
mysql> select instr('foobarbar', 'bar');  
  -> 4 

9、locate(substr,str,pos)  
    作用:返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)  

mysql> select locate('bar', 'foobarbar',5);  
  -> 7  

10、lpad(str,len,padstr)/rpad(str,len,padstr)    
作用:用字符串padstr填补str左端/右端直到字串长度为len并返回  

mysql> select lpad('hi',4,'??');  
  -> '??hi'  
mysql> select rpad('hi',5,'?');  
  -> 'hi???' 

 11、left(str,len)/right(str,len)     
    作用:返回字符串str的左端/右端的len个字符

mysql> select left('foobarbar', 5);  
  -> 'fooba'  
mysql> select right('foobarbar', 4);  
  -> 'rbar' 

 12、substring(str,pos,len)/substring(str from pos for len)/mid(str,pos,len)   
    作用:返回字符串str的位置pos起len个字符

mysql> select substring('quadratically',5,6);  
  -> 'ratica' 

 13、substring(str,pos)/substring(str from pos)   
    作用:返回字符串str的位置pos起的一个子串,pos为负数时,倒数后截取到最后 

mysql> select substring('quadratically',5);  
  -> 'ratically' 
mysql> select substring('foobarbar' from 4);  
  -> 'barbar' 

 14、substring_index(str,delim,count)   
    作用:返回从字符串str的第count个出现的分隔符delim之后的子串
          (count为正数时返回左端,否则返回右端子串)  

mysql> select substring_index('www.mysql.com', '.', 2);  
  -> 'www.mysql' 
mysql> select substring_index('www.mysql.com', '.', -2);  
  -> 'mysql.com' 

 15、ltrim(str)/rtrim(str)   
    作用:返回删除了左空格/右空格的字符串str  

mysql> select ltrim('  barbar');  
  -> 'barbar' 
mysql> select rtrim('barbar   ');  
  -> 'barbar' 

 16、trim([[both | leading | trailing] [remstr] from] str)   
    作用:返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)  

mysql> select trim('  bar   ');  
  -> 'bar' 
mysql> select trim(leading 'x' from 'xxxbarxxx');  
  -> 'barxxx' 
mysql> select trim(both 'x' from 'xxxbarxxx');  
  -> 'bar' 
mysql> select trim(trailing 'xyz' from 'barxxyz');  
  -> 'barx' 

 17、space(n)   
    作用:返回由n个空格字符组成的一个字符串

mysql> select space(6);  
  -> '      ' 

18、replace(str,from_str,to_str)   
    作用:用字符串to_str替换字符串str中的子串from_str并返回  

mysql> select replace('www.mysql.com', 'w', 'ww');  
  -> 'wwwwww.mysql.com' 

19、repeat(str,count)   
    作用:返回由count个字符串str连成的一个字符串(任何参数为null时
          返回null,count<=0时返回一个空字符串)  

mysql> select repeat('mysql', 3);  
  -> 'mysqlmysqlmysql' 

20、reverse(str)   
    作用:颠倒字符串str的字符顺序并返回 

mysql> select reverse('abc');  
  -> 'cba' 

21、insert(str,pos,len,newstr);把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回

SELECT INSERT('abcd',2,1,'betty');  abettycd
SELECT INSERT('i like you',LOCATE('you','i like you'),3,'mysql'); i like mysql

22、lcase(str)/lower(str)/ucase(str)/upper(str)   作用:返回str的大小写   

SELECT LOWER('i like yourName 3'),UPPER('i like yourName 3');

23、elt(n,str1,str2,str3,...)   
    作用:返回第n个字符串(n小于1或大于参数个数返回null)  

mysql> select elt(1, 'ej', 'heja', 'hej', 'foo');  
  -> 'ej' 
mysql> select elt(4, 'ej', 'heja', 'hej', 'foo');  
  -> 'foo' 

24、field(str,str1,str2,str3,...)   
    作用:返回str等于其后的第n个字符串的序号(如果str没找到返回0)  

mysql> select field('ej', 'hej', 'ej', 'heja', 'hej',
'foo');  
  -> 2  
mysql> select field('fo', 'hej', 'ej', 'heja', 'hej',
'foo');  
  -> 0  

25、find_in_set(str,strlist)   
    作用:返回str在字符串集strlist中的序号(任何参数是null则返回null,如果str没找到返回0,参数1包含","时工作异常)        

mysql> select find_in_set('b','a,b,c,d');  
  -> 2

26、make_set(bits,str1,str2,...)  
把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应位置的字串选入字串集并返回(null串不添加到结果中)

mysql> select make_set(1,'a','b','c');  
                 01   97-61 01100001 01100010 0011
  -> 'a' 
mysql> select make_set(1 | 4,'hello','nice','world');  
                      01   0100     
  -> 'hello,world' 
mysql> select make_set(0,'a','b','c');  
  -> '' 

猜你喜欢

转载自blog.csdn.net/Betty_betty_betty/article/details/82430698