MySQL有一些用于格式化、处理和分析字符串的内置函数,这些函数对于特定的用户和数据列都适用。
这些字符串函数并不修改它们所输入的值,函数的返回值包含了这些变化。
一、按类型排序的字符串函数
字符串函数列表是很长的,但是大多数函数能起到类似的作用。
-
字符集和校对函数
CHARSET( )、COALESCE( )、COERCIBILITY( )、COLLATION( ) -
类型转换函数
ASCII( )、BIN( )、BINARY( )、CAST( )、CHAR( )、COMPRESS( )、CONVERT( )、
EXPORT_SET( )、HEX( )、 MAKE_SET( )、ORD( )、SOUNDEX( )、UNCOMPRESS( )、
UNHEX( ) -
格式化函数
CONCAT( )、CONCAT_WS( )、LCASE( )、LENGTH( )、LOWER( )、LPAD( )、LTRIM( )、
OCTET_LENGTH( )、QUOTE( )、RPAD( )、RTRIM( )、SPACE( )、TRIM( )、UCASE( )、
UPPER( ) -
表达式函数
BIT_ LENGTH( )、CRC32( )、CHAR_ LENGTH( )、CHARACTER_ LENGTH( )、ELT( )、
FIELD( )、FIND_ IN_ SET( )、INSTR( )、INTERVAL( )、LOCATE( )、MATCH( )AGAINST( )、POSITION( )、STRCMP( )、UNCOMPRESSED _LENGTH( ) -
提取函数
LEFT( )、LOAD_ FILE( )、MID( )、RIGHT( )、SUBSTR( )、SUBSTRING( )、
SUBSTRING_ INDEX( ) -
字符串操纵函数
INSERT( )、REPEAT( )、REPLACE( )、REVERSE( )
二、按字母排序的字符串函数(上面的函数的说明)
-
ASCII(String)
本函数返回与给定的字符串中第一个字符相对应的ASCII码值。如果给定的字符串为空字符串,则返回值为0。从函数的名字可以看出(@@@@),本函数对于处在ASCII集之外(也就是说,字符对应的值高于127)的字符同样起作用,对于这样的字符来讲,该函数可能是最有用的。 -
BIN(number)
本函数返回给定整数值所对应的二进制字符串。如果输人的参数值为NULL,则返回NULL。 -
BINARY
BINARY String 使用本函数来处理二进制字符串。在构建区分大小写的SQL语句时,该函数可以派上用场。注意,本语法并不需要圆括号。 -
BIT_ LENGTH(String)
该函数返回给定字符串的比特长度。 -
CAST( )
使用该函数将-种数据类型的值转换为另–种类型的值。 -
CHAR( )
本函数返回与作为数字代码值的参数相对应的字符串的值。 -
CHAR_ LENGTH(String)
该函数返回给定字符串的字符长度。这个函数与CHARACTER_ LENGTH( ) 函数是同义词。多字节字符被认为是一个字符。如果你要计算每一个字节, 请使用LENGTH( )函数。 -
CHARACTER_ LENGTH( )
本函数返回给定字符串的字符长度。多字节字符被认为是一个字符。该函数与CHAR_ LENGTH( )函数是同义词。 -
CHARSET( )
本函数返回给定字符串的字符集。从MySQL 4.1 .0版本开始引入了该函数。 -
COALESCE( )
本函数返回逗号分隔符列表中最左边的非NULL字符串或者列。如果所有元素为NULL,则该函数返回值为NULL。 -
COERCIBILITY( )
本函数返回给定字符串或者其他项目的一个抽象的可压缩性值,用于显示在表达式中项目可用的校对规则。当SQL语句的执行结果包含不同的数据类型时,MySQL有时需要对使用那种校对作出选择。下面是该函数可能的一一些返回值:
0:校对已明确指定(如使用COLLATE语句)。
1:不同校对值的参数合并。
2:参数有明确的校对(如,给定了某一列。)
3:参数是系统常量,如系统变量或者返回类似值的函数。
4:参数是文字字符串。
5:参数为NULL或者来自于NULL值的表达式。
当服务器确定使用哪一个校对时,较低的可压缩性级别优先于高压缩级别(被使用)。从MySQL 4.1 .0版本开始引入了该函数。 -
COLLATION( )
本函数返回给定字符串的字符集的排序方式。从MySQL 4.1 .0版本开始引入了该函数。 -
COMPRESS( )
对于压缩过的字符串,本函数返回一个给定的字符串。这个函数要求MySQL已经使用压缩库(如,zlib) 编译过。否则,将返回NULL值。从MySQL 4.1版本开始引入了该语句。 -
CONCAT( )
使用本函数,可以将字符串或者列连接、合并在一个结果字段中。对于由逗号分割的每个参数,可以将这些参数指定为任意的字符串。如果其中任何一个参数为NULL,则返回值为NULL。 -
CONCAT_WS( )
本函数连接文本和列的字符串,并将这些字符串用第一个参数中指定的字符作为分割符。在第一个参数之后,你可以指定任何字符串,每个参数由逗号来分割。该函数会忽略掉所有的NULL值。 -
CONVERT( )
使用本函数将给定的字符串集转换为使用USING关键字所指定的字符集。从MySQL 4.0.2版本开始,引入了该函数。该函数与CAST( )函数有 点类似。如果给定字符串的字符集与MySQL默认的字符集不一样,你可以在该字符串之前把它对应的字符集列举出来,并在该字符集前加一-下划线。 -
CRC32( )
本函数用于计算给定字符串的循环冗余校验码(CRC,Cyclic Redundancy Check)的值并返回一个无符号的32比特值。从MySQL 4.1版本开始引人了该函数。如果给定的参数为NULL,则结果为NULL。即使参数为数字值,该函数也会将其作为字符串来处理。 -
ELT( )
本函数返回给定字符串清单中的索引元素,索引元素是从1开始算起的。如果给定的数字小于1或者元素数目小于给定的数目,此时,返回值为NULL。 -
EXPORT_SET( )
为了表示每个给定数目的位,本函数返回一系列的字符串。第二个参数指定字符串用以表示高位比特位(on比特位),第三个参数指定字符表示清零比特位(ff比特位)。第4个参数用于指定分隔符,而最后一个参数用于指定要显示的2进制位数。默认分隔符是逗号。 -
FIELD( )
本函数查找如下给定字符列表中的第一个字符并返回在列表中与之匹配的第一个字符的数字位置。在要查找的参数间,第一个元素是1。如果没有找到要查找的字符串或者其值为NULL,则返回值为0。 -
FIND_ IN_ SET( )
本函数返回第一个参数在第二个参数中的位置,其中第二个参数是由逗号作为分隔符的一个单一字符串。列表中的第一个元素值是1。如果在该集合中没有找到该字符,则返回值为0。如果其中的任意一个参数为NULL,则返回值为NULL。 -
HEX( )
该函数的第- -种形式是接受一个字符串并返回其对应的16进制数字值,在16进制中,它是表示成字符集形式的。第二种形式是接受一个 10进制整数并返回与之等价的16进制整数。如果给定的参数值为NULL,则函数的返回结果为NULL。 -
INSERT( )
本函数将最后一个参数字符插入到第一个 参数字符的指定位置中。如果length大于0,那么该函数会覆盖掉指定数目的字符。因此,新字符会替代原有的部分字符。如果其中有一个参数为NULL,则返回值也为NULL.第一个位置是1。不要把该函数与SQL的INSERT语句混淆了。 -
INSTR( )
本函数返回子字符串在第一个参数所给定的字符中 首次出现的位置。第一个位置的索引值为1。该函数对大小写并不敏感,除非其中有一个参数为2进制字符串。INSTR( )函数与L0CATE( )函数的用法类似,但是这二个函数中的参数顺序不一样。 -
INTERVAL( )
该函数返回search_ value 在ordered value的逗号分隔符参数列表中的位置。换句话说,该函数返回第一个小于或等于search val ue的ordered_ value的位置。所有的参数按照整数来处理,调用的ordered_ value必 须按照升序顺序罗列在参数列表中。如果search_value位于第一个ordered_ value之 前,那么其返回值为0。如果search_ value位于最后一个ordered_ value之后, 那么其返回值为该ordered_ value所在的位置。 -
LCASE( )
该函数将给定的所有字符转换为小写字母字符。它是LOWER( )函数的别名。 -
LEFT( )
该函数返回字符串的前几个字符。如果你想提取字符串的末尾部分而不是开头部分,请使用RIGHT( )函数。它们是多字节安全(multibyte -safe)的函数。 -
LENGTH( )
该函数返回给定字符串string中的字符数,用字节来度量。此函数并不识别多字节字符,因此,它假定一个字节为8位,一个字符为一个字节。OCTET. _LENGTH( )函数是它的别名。无论字符是否为多字节字符,如果你想获取它们的长度,那么请使用CHARACTER_LENGTH( )函数。 -
LOAD_ FILE( )
该函数用于读取文件的内容,并将文件作为MySQL语句和函数中的字符串返回。用户必须拥有FILE权限,并且文件系统上的所有用户都可以读取这个文件。如果文件不存在、用户权限不够或文件不能被读取,那么此函数将返回NULL.文件容量不能超过在系统变量max_ allowed packet中指定的字节数。从MySQL 5.1 .6版本开始,在由文件系统识别的字符集中,可以使用系统变量character_ set. filesystem提供文件名。 -
LOCATE( )
该函数返回子字符串在第二个参数给定的字符串中首次出现的位置。你也可以在第三个参数中指定搜索的起始位置。除非给定的字符串为二进制字符串,否则此函数并不区分字符串中的大小写字母。此函数是多字节安全(multibyte-safe) 的函数。 -
LOWER( )
此函数将给定的所有字符转换为小写字母字符。它是LCASE( )函数的别名。 -
LPAD( )
此函数从字符串的左边位置开始为它增加填充字符,如果字符串(string) 与被增添的填充字符(padding) 间的组合超出了字符串的长度(1ength) ,它便停止运行。如果length的值比字符串的长度小,那么此函数的执行结果为,从左到右开始截取该字符串,返回字符串的长度为length,这样做是为了遵循该函数对长度的限制。填充字符可以是任意字符。 -
LTRIM( )
此函数返回给定的字符串(string) , 并移除掉它的前导空格(leading spaces)。当它用在类似于UPDATE这样的SQL语句中时,没有前导空格的行将不会发生变化。此函数是多字节安全(multibyte-safe) 的函数。要想去掉字符的结尾空格(trailing spaces),请使用RTRIM( )函数。 要想去掉字符的前导空格(leading spaces)和结尾空格(trailingspaces) ,请使用TRIM( )函数。 -
MAKE_SET( )
此函数把10进制数转换为2进制数,对于在该数中设置的所有位,返回一个由逗号分开的值列表,低位数使用string1.次低位数使用string2,等等,依此类推。 -
MATCH( )AGAINST( )
此函数仅用于FULLTEXT索引列以及NHERE子句中。在这些子句中,它可以是为给定字符串搜索列的条件。包含空格字符串的文本被解析成字节码,因此与之匹配的列至少包含一个字节码。小的字节码(不超过三个)会被忽略。 -
MID( )
该函数返回指定字符串的字符,起始位置在第二个参数中指定。第一个字符的编号为1。你可以在第三个参数中指定字符串的范围来限定被检索的字符串的长度。此函数与SUBSTRING( )函数是类似的。 -
OCTET_LENGTH( )
该函数返回给定字符串string中的字符数,用比特度量。它并不识别多字节字符,因此,它假定一个字节有8位,1位对应一个字符。如今,在大多数的上下文中,octet是字节的同义词,因此,此函数是LENGTH( )的别名。 -
ORD( )
此函数返回给定字符串中最左边字符的ASCII码字符集的ASCII码值,该值是一个序数值。若给定的字符是多字节字符,它通过如下公式来确定结果:
bytel + (byte2 * 256) + (byte3 *2563)… -
POSITION( )
该函数返回字符串string中子字符串substring的第一一个出现位置。字符串的第一一个字符位置为1。该函数的用法与L0CATE( )函数 十分类似,它们的不同之处在于,该函数中用的是关键字IN将string与substring分隔开,而LOCATE( )函数中 用的是逗号分隔符。另外,此函数并不提供查找的起始点,它必须从最左边的字符开始。 -
QUOTE( )
此函数接受一个用单引号括起来的字符串,它的返回值为字符串,在SQL语句中我们可以安全地使用该字符串。字符串中包含的如下符号可以被反斜线引用:单引号、反斜线符号、ASCII NULL和Control-Z。当从公共Web界面接受值时,这是一个非常安全的措施。 -
REPEAT( )
此函数返回多个由第一个参数指定的字符串(string) ,重复的次数为第二个参数中指定的参数count。如果count的值小于1,那么它的返回值为空字符串。如果其中有一个参数值为NULL,那么它的返回值也为NULL。 -
REPLACE( )
该函数遍历第一个参数,并把在第一个参数中出现过的第二个参数值用第三个参数值代替。 -
REVERSE( )
该函数返回参数string中的字符,但是其顺序和字符顺序相反。它是多字节安全(multibyte-safe)的函数。 -
RIGHT( )
该函数返回字符串(string) 的最后长度的字符。如果你想提取字符串的开始部分而不是末尾部分,请使用LEFT( )函数。 它们是多字节安全(mulibyte-safe) 的函數。 -
RPAD( )
此函数从字符串的右端开始为它增加填充字符,如果字符串(string) 与被增添的填充字符(padding) 间的组合超出了字符串的长度(length) ,它便停止运行。如果给定的length值比字符串的长度小,那么字符串将会被截短以便与长度约束保持一致。填充字符可以是任意字符。 -
RTRIM( )
用在类似于UPDATE这样的SQL语句中时,没有尾部空格的行将不会发生变化。此函数是多字节安全(multibyte-safe) 的函数。要想去掉字符的前导空格(leading space) ,请使用RTRIM( )函数。要想去掉字符的前导空格(leading space)和结尾空格(railing space),请使用TRIM( )函数。 -
SOUNDEX( )
该函数返回经典算法的结果,用于比较二个类似的字符串。 -
SPACE( )
此函数返回由空格间隔符组成的字符串。在函数的参数(count) 中设置返回的空格数目。 -
STRCMP( )
此函数按照ASCII码序列(ASCII sequence)的格式比较二个字符串,以确定第一个字符串是在第二个字符串的前面还是后面。如果第一个字符串小于第二个字符串,那么返回值为-1。如果第一个字符串大于第二个字符串,那么返回值为1。如果所有的字符串均相等,那么返回值为0。此函数通常用于文字数字间的比较,但是字符串之间进行比较时,是区分大小写的,但给定的字符串中有一个或两个都是二进制字符串时除外。 -
SUBSTR( )
此函数是SUBSTRING( )函数的别名。 -
SUBSTRING( )
此函数返回- -个给定字符的字符串,它从一个给定的位置开始算起。第一个字符的编号为1。通过指定一个界限,你可以限定被检索的字符串的长度。此函数的用法与MID( )函数十分类似。 -
TRIM( )
此函数用于删除给定字符串的任意后缀或前缀填充字符,这取决于你所指定的填充字符类型。在没有指定前后缀填充字符的情况下,默认的填充字符为BOTH,它会删除撬所有的前后缀字符。在没有指定填充字符的情况下,默认的填充字符为空格。此函数是多字节安全(multibyte-safe) 的函数。 -
UCASE( )
此函数将给定的所有字符转换为大写字母字符。它是UPPER( )函数的别名。 -
UNCOMPRESS( )
此函数的返回值为相应于给定的压缩字符串进行解压缩后得到的字符串,它的功能恰好与COMPRESS( )函数相反。 这个函数要求MySQL已经使用压缩库(如,zlib) 对它编译过。如果给定的字符串是未压缩的字符串或者MySQL没有使用zlib压缩,那么它的返回值为NULL.从MySQL 4.1.1版本开始引入了该函数。 -
UNCOMPRESSED _LENGTH( )
此函数返回给定的压缩字符串在压缩前时字符串的长度。你可以使用COMPRESS( )函数压缩字符串。从MySQL 4.1版本开始引入了该函数。 -
UNHEX( )
此函数将十六进制数字转换成与之等价的字符。它执行的是HEX( )函数的方向操作, 从MySQL 4.1 .2版本开始引入了该函数。 -
UPPER( )
此函数把给定的所有字符转换为大写字母字符。它是UCASE( )函数的别名。
参考书籍
- 《深入理解MySQL核心技术》