MySQL字符串函数:字符串截取ITeye - 乐橙lc8

MySQL字符串函数:字符串截取ITeye

2019年02月22日07时59分21秒 | 作者: 凡白 | 标签: 字符串,函数,字符 | 浏览: 1906

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其间,mid(), substr() 等价于 substring() 函数,substring() 的功用十分强大和灵敏。

1. 字符串截取:left(str, length)

mysql select left(sqlstudy.com, 3);
+-+
| left(sqlstudy.com, 3) |
+-+
| sql |
+-+

2. 字符串截取:right(str, length)

mysql select right(sqlstudy.com, 3);
++
| right(sqlstudy.com, 3) |
++
| com |
++

3. 字符串截取:substring(str, pos); substring(str, pos, len)

3.1 从字符串的第 4 个字符方位开端取,直到完毕。

mysql select substring(sqlstudy.com, 4);
++
| substring(sqlstudy.com, 4) |
++
| study.com |
++

3.2 从字符串的第 4 个字符方位开端取,只取 2 个字符。

mysql select substring(sqlstudy.com, 4, 2);
+-+
| substring(sqlstudy.com, 4, 2) |
+-+
| st |
+-+

3.3 从字符串的第 4 个字符方位(倒数)开端取,直到完毕。

mysql select substring(sqlstudy.com, -4);
+-+
| substring(sqlstudy.com, -4) |
+-+
| .com |
+-+

3.4 从字符串的第 4 个字符方位(倒数)开端取,只取 2 个字符。

mysql select substring(sqlstudy.com, -4, 2);
++
| substring(sqlstudy.com, -4, 2) |
++
| .c |
++

咱们注意到在函数 substring(str,pos, len)中, pos 可所以负值,但 len 不能取负值。

4. 字符串截取:substring_index(str,delim,count)

4.1 截取第二个 . 之前的一切字符。

mysql select substring_index(www.sqlstudy.com.cn, ., 2);
++
| substring_index(www.sqlstudy.com.cn, ., 2) |
++
| www.sqlstudy |
++

4.2 截取第二个 . (倒数)之后的一切字符。

mysql select substring_index(www.sqlstudy.com.cn, ., -2);
+-+
| substring_index(www.sqlstudy.com.cn, ., -2) |
+-+
| com.cn |
+-+

4.3 假如在字符串中找不到 delim 参数指定的值,就回来整个字符串

mysql select substring_index(www.sqlstudy.com.cn, .coc, 1);
+-+
| substring_index(www.sqlstudy.com.cn, .coc, 1) |
+-+
| www.sqlstudy.com.cn |
+-+

 

 

ASCII(str)

     回来字符串str的最左面字符的ASCII代码值。假如str是空字符串,回来0。假如str是NULL,回来NULL。

 

Java代码

如:select ASCII(2);select ASCII(2); 成果都为2的Ascii码值 50   

如:select ASCII(2);select ASCII(2); 成果都为2的Ascii码值 50 

 

CHAR(N,...)

CHAR()将参数解释为整数而且回来由这些整数的ASCII代码字符组成的一个字符串。NULL值被越过。

 

Java代码

select CHAR(77,121,83,81,NULL);  成果为 MySQ ; 

select CHAR(77,121,83,81,NULL);  成果为 MySQ ;

 

[color=darkred]CONCAT(str1,str2,...)

    回来来自于参数连接的字符串。假如任何参数是NULL,回来NULL。能够有超越2个的参数。一个数字参数被改换为等价的字符串方式。

 

Java代码

select CONCAT(My, S, QL);  //MySQL  

select CONCAT(12.3); //12.3 

select CONCAT(My, S, QL);  //MySQL

select CONCAT(12.3); //12.3

 

LENGTH(str)

   核算字符串长度 :select length(text) ;  //4

 

LOCATE(substr,str)

POSITION(substr IN str)

回来子串substr在字符串str第一个呈现的方位,假如substr不是在str里边,回来0.

 

Java代码

1.mysql select LOCATE(bar, foobarbar);  

2.        - 4 

3.mysql select LOCATE(xbar, foobar);  

4.        - 0 

mysql select LOCATE(bar, foobarbar);

        - 4

mysql select LOCATE(xbar, foobar);

        - 0该函数是多字节牢靠的

 

LOCATE(substr,str,pos)

回来子串substr在字符串str第一个呈现的方位,从方位pos开端。假如substr不是在str里边,回来0。

 

Java代码

1.mysql select LOCATE(bar, foobarbar,5);  

2.        - 7 

mysql select LOCATE(bar, foobarbar,5);

        - 7

 

INSTR(str,substr)

回来子串substr在字符串str中的第一个呈现的方位。这与有2个参数方式的LOCATE()相同,除了参数被倒置。

 

Java代码

1.mysql select INSTR(foobarbar, bar);  

2.        - 4 

3.mysql select INSTR(xbar, foobar);  

4.        - 0 

mysql select INSTR(foobarbar, bar);

        - 4

mysql select INSTR(xbar, foobar);

        - 0这函数是多字节牢靠的。

 

LPAD(str,len,padstr)

回来字符串str,左面用字符串padstr添补直到str是len个字符长。

 

Java代码

1. PRE "code" mysql select LPAD(hi,4,??);  

2.        - ??hi 

3. [color=darkred]RPAD(str,len,padstr)[/color] /PRE 回来字符串str,右面用字符串padstr添补直到str是len个字符长。    

Java代码 mysql select LPAD(hi,4,??);           - ??hi 

mysql select LPAD(hi,4,??);

        - ??hi

[color=darkred]RPAD(str,len,padstr)[/color]

回来字符串str,右面用字符串padstr添补直到str是len个字符长。  

mysql select RPAD(hi,5,?);

        - hi???

LEFT(str,len)

回来字符串str的最左面len个字符。

 

Java代码

1.mysql select LEFT(foobarbar, 5);  

2.        - fooba该函数是多字节牢靠的。 

mysql select LEFT(foobarbar, 5);

        - fooba该函数是多字节牢靠的。

RIGHT(str,len)

回来字符串str的最右面len个字符。

 

Java代码

1.mysql select RIGHT(foobarbar, 4);  

2.        - rbar 

mysql select RIGHT(foobarbar, 4);

        - rbar

该函数是多字节牢靠的。

 

SUBSTRING(str,pos)

SUBSTRING(str FROM pos)

从字符串str的开始方位pos回来一个子串。

mysql select SUBSTRING(Quadratically,5);

        - ratically

mysql select SUBSTRING(foobarbar FROM 4);

        - barbar

该函数是多字节牢靠的。

SUBSTRING_INDEX(str,delim,count)

回来从字符串str的第count个呈现的分隔符delim之后的子串。假如count是正数,回来最终的分隔符到左面(从左面数) 的一切字符。假如count是负数,回来最终的分隔符到右边的一切字符(从右边数)。

mysql select SUBSTRING_INDEX(www.mysql.com, ., 2);

        - www.mysql

mysql select SUBSTRING_INDEX(www.mysql.com, ., -2);

        - mysql.com

该函数对多字节是牢靠的。

LTRIM(str)

回来删去了其前置空格字符的字符串str。

mysql select LTRIM(  barbar);

        - barbar

RTRIM(str)

回来删去了其拖后空格字符的字符串str。

mysql select RTRIM(barbar   );

        - barbar

该函数对多字节是牢靠的。 

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

回来字符串str,其一切remstr前缀或后缀被删去了。假如没有修饰符BOTH、LEADING或TRAILING给出,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

该函数对多字节是牢靠的。

SOUNDEX(str)

回来str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“规范”的同音字符串长是4个字符,可是SOUNDEX()函数回来一个恣意长的字符串。你能够在成果上运用SUBSTRING()得到一个“规范”的 同音串。一切非数字字母字符在给定的字符串中被疏忽。一切在A-Z之外的字符世界字母被当作元音。

mysql select SOUNDEX(Hello);

        - H400

mysql select SOUNDEX(Quadratically);

        - Q36324

SPACE(N)

回来由N个空格字符组成的一个字符串。

mysql select SPACE(6);

        -      

REPLACE(str,from_str,to_str)

回来字符串str,其字符串from_str的一切呈现由字符串to_str替代。

mysql select REPLACE(www.mysql.com, w, Ww);

        - WwWwWw.mysql.com

该函数对多字节是牢靠的。

REPEAT(str,count)

回来由重复countTimes次的字符串str组成的一个字符串。假如count = 0,回来一个空字符串。假如str或count是NULL,回来NULL。

mysql select REPEAT(MySQL, 3);

        - MySQLMySQLMySQL

REVERSE(str)

回来倒置字符次序的字符串str。

mysql select REVERSE(abc);

        - cba

该函数对多字节牢靠的。

INSERT(str,pos,len,newstr)

回来字符串str,在方位pos开始的子串且len个字符长得子串由字符串newstr替代。

mysql select INSERT(Quadratic, 3, 4, What);

        - QuWhattic

该函数对多字节是牢靠的。

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

假如N= 1,回来str1,假如N= 2,回来str2,等等。假如N小于1或大于参数个数,回来NULL。ELT()是FIELD()反运算。

mysql select ELT(1, ej, Heja, hej, foo);

        - ej

mysql select ELT(4, ej, Heja, hej, foo);

        - foo

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

回来str在str1, str2, str3, ...清单的索引。假如str没找到,回来0。FIELD()是ELT()反运算。

mysql select FIELD(ej, Hej, ej, Heja, hej, foo);

        - 2

mysql select FIELD(fo, Hej, ej, Heja, hej, foo);

        - 0

FIND_IN_SET(str,strlist)

假如字符串str在由N子串组成的表strlist之中,回来一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。假如第一个参数是一个常数字符串而且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而运用位运算!假如str不是在strlist里边或假如strlist是空字符串,回来0。假如任何一个参数是NULL,回来NULL。假如第一个参数包括一个“,”,该函数将作业不正常。

mysql SELECT FIND_IN_SET(b,a,b,c,d);

        - 2

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

回来一个调集 (包括由“,”字符分隔的子串组成的一个字符串),由相应的位在bits调集中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1, str2, ...中的NULL串不添加到成果中。

mysql SELECT MAKE_SET(1,a,b,c);

        - a

mysql SELECT MAKE_SET(1 | 4,hello,nice,world);

        - hello,world

mysql SELECT MAKE_SET(0,a,b,c);

        -

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

回来一个字符串,在这里关于在“bits”中设定每一位,你得到一个“on”字符串,而且关于每个复位(reset)的位,你得到一个“off”字符串。每个字符串用“separator”分隔(缺省“,”),而且只要“bits”的“number_of_bits” (缺省64)位被运用。

mysql select EXPORT_SET(5,Y,N,,,4)

        - Y,N,Y,N

LCASE(str)

LOWER(str) 回来字符串str,依据当时字符集映射(缺省是ISO-8859-1 Latin1)把一切的字符改变成小写。该函数对多字节是牢靠的。

mysql select LCASE(QUADRATICALLY);

        - quadratically

UCASE(str)

回来字符串str,依据当时字符集映射(缺省是ISO-8859-1 Latin1)把一切的字符改变成大写。该函数对多字节是牢靠的。

mysql select UCASE(Hej);

        - HEJ

该函数对多字节是牢靠的。

LOAD_FILE(file_name)

读入文件而且作为一个字符串回来文件内容。文件有必要在服务器上,你有必要指定到文件的完好路径名,而且你有必要有file权限。文件有必要一切内容都是可读的而且小于max_allowed_packet。假如文件不存在或因为上面原因之一不能被读出,函数回来NULL。

mysql UPDATE table_name

           SET blob_column=LOAD_FILE("/tmp/picture")

           WHERE id=1;

 

MySQL必要时主动改换数字为字符串,而且反过来也如此:

 

mysql SELECT 1+"1";

        - 2

mysql SELECT CONCAT(2, test);

        - 2 test

假如你想要明确地改换一个数字到一个字符串,把它作为参数传递到CONCAT()。

 

假如字符串函数供给一个二进制字符串作为参数,成果字符串也是一个二进制字符串。被改换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章