一、字符串比较函数和运算符

函数名称 函数说明
ASCII() Return numeric value of left-most character
BIN() Return a string containing binary representation of a number
BIT_LENGTH() Return length of argument in bits
CHAR() Return the character for each integer passed
CHAR_LENGTH() Return number of characters in argument
CHARACTER_LENGTH() Synonym for CHAR_LENGTH()
CONCAT() Return concatenated string
CONCAT_WS() Return concatenate with separator
ELT() Return string at index number
EXPORT_SET() Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string
FIELD() Index (position) of first argument in subsequent arguments
FIND_IN_SET() Index (position) of first argument within second argument
FORMAT() Return a number formatted to specified number of decimal places
FROM_BASE64() Decode base64 encoded string and return result
HEX() Hexadecimal representation of decimal or string value
INSERT() Insert substring at specified position up to specified number of characters
INSTR() Return the index of the first occurrence of substring
LCASE() Synonym for LOWER()
LEFT() Return the leftmost number of characters as specified
LENGTH() Return the length of a string in bytes
LIKE Simple pattern matching
LOAD_FILE() Load the named file
LOCATE() Return the position of the first occurrence of substring
LOWER() Return the argument in lowercase
LPAD() Return the string argument, left-padded with the specified string
LTRIM() Remove leading spaces
MAKE_SET() Return a set of comma-separated strings that have the corresponding bit in bits set
MATCH() Perform full-text search
MID() Return a substring starting from the specified position
NOT LIKE Negation of simple pattern matching
NOT REGEXP Negation of REGEXP
OCT() Return a string containing octal representation of a number
OCTET_LENGTH() Synonym for LENGTH()
ORD() Return character code for leftmost character of the argument
POSITION() Synonym for LOCATE()
QUOTE() Escape the argument for use in an SQL statement
REGEXP Whether string matches regular expression
REPEAT() Repeat a string the specified number of times
REPLACE() Replace occurrences of a specified string
REVERSE() Reverse the characters in a string
RIGHT() Return the specified rightmost number of characters
RLIKE Whether string matches regular expression
RPAD() Append string the specified number of times
RTRIM() Remove trailing spaces
SOUNDEX() Return a soundex string
SOUNDS LIKE Compare sounds
SPACE() Return a string of the specified number of spaces
STRCMP() Compare two strings
SUBSTR() Return the substring as specified
SUBSTRING() Return the substring as specified
SUBSTRING_INDEX() Return a substring from a string before the specified number of occurrences of the delimiter
TO_BASE64() Return the argument converted to a base-64 string
TRIM() Remove leading and trailing spaces
UCASE() Synonym for UPPER()
UNHEX() Return a string containing hex representation of a number
UPPER() Convert to uppercase
WEIGHT_STRING() Return the weight string for a string

ASCII(str)

返回字符串 str 最左边字符的数值。如果 str 为空字符串,则返回0。如果 str 为 NULL,则返回 NULL。ASCII ()适用于8位字符。

  1. mysql> SELECT ASCII('2');
  2. -> 50
  3. mysql> SELECT ASCII(2);
  4. -> 50
  5. mysql> SELECT ASCII('dx');
  6. -> 100

ORD(str)

如果字符串 str 的最左边的字符是一个多字节字符,返回该字符的代码,使用以下公式从其组成字节的数值中计算:

  1. (1st byte code)
  2. + (2nd byte code * 256)
  3. + (3rd byte code * 256^2) ...

如果最左边的字符不是多字节字符,ORD ()将返回与 ASCII ()函数相同的值。

  1. mysql> SELECT ORD('2');
  2. -> 50

BIN(N)

返回二进制值 n 的字符串表示形式,其中 n 是 BIGINT。这相当于 CONV (n,10,2) 。如果 n 为 NULL,则返回 NULL。

  1. mysql> SELECT BIN(12);
  2. -> '1100'

BIT_LENGTH(str)

返回以位为单位的字符串 str 长度。

  1. mysql> SELECT BIT_LENGTH('text');
  2. -> 32

CONCAT(str1,str2,…)

返回连接参数后产生的字符串。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果为非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。数值参数被转换为其等效的非二进制字符串形式。如果任何参数为 NULL,CONCAT ()返回 NULL。

  1. mysql> SELECT CONCAT('My', 'S', 'QL');
  2. -> 'MySQL'
  3. mysql> SELECT CONCAT('My', NULL, 'QL');
  4. -> NULL
  5. mysql> SELECT CONCAT(14.3);
  6. -> '14.3'

对于带引号的字符串,可以通过将字符串相邻放置来执行连接:

  1. mysql> SELECT 'My' 'S' 'QL';
  2. -> 'MySQL'

如果从 mysql 客户端中调用 CONCAT () ,则根据 — binary-as-hex 的值,使用十六进制表示法显示二进制字符串结果。有关该选项的详细信息,请参阅第4.5.1节“ MySQL ー MySQL 命令行客户端”

CONCAT_WS(separator,str1,str2,…)

CONCAT_WS() 代表 CONCAT 和 Separator,是 CONCAT ()的一种特殊形式。第一个参数是其余参数的分隔符。将在要连接的字符串之间添加分隔符。分隔符可以是字符串,其余的参数也可以是字符串。如果分隔符为 NULL,则结果为 NULL。
该函数不会跳过空字符串,但是会跳过分隔符参数后面的任何 NULL 值。

  1. mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
  2. -> 'First name,Second name,Last Name'
  3. mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
  4. -> 'First name,Last Name'

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

返回 str1,str2,str3,… 列表中 str 的索引(位置)。如果没有找到 str,返回0。
如果 FIELD ()的所有参数都是字符串,则将所有参数作为字符串进行比较。如果所有的参数都是数字,那么它们就被当作数字进行比较。否则,这些参数将被比作 double。
如果 str 为 NULL,则返回值为0,因为 NULL 不能与任何值进行相等比较。FIELD ()是 ELT ()的补充。

  1. mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
  2. -> 2
  3. mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
  4. -> 0

LENGTH(str)

返回字符串 str 的长度(以字节为单位)。多字节字符计数为多个字节。这意味着对于包含5个2字节字符的字符串,LENGTH ()返回10,而 CHAR _ LENGTH ()返回5。

  1. mysql> SELECT LENGTH('text');
  2. -> 4

LOWER(str) / UPPER()

返回根据当前字符集映射将所有字符更改为小写的字符串 str。默认值是 latin1(cp1252 West European)。

  1. mysql> SELECT LOWER('QUADRATICALLY');
  2. -> 'quadratically'
  3. mysql> SELECT UPPER('Hej');
  4. -> 'HEJ'

LOWER ()(和 UPPER())在应用于二进制字符串(BINARY,VARBINARY,BLOB)时无效。要对二进制字符串执行字母大小写转换,首先使用适合存储在字符串中的数据的字符集将其转换为非二进制字符串:

  1. mysql> SET @str = BINARY 'New York';
  2. mysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));
  3. +-------------+-----------------------------------+
  4. | LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |
  5. +-------------+-----------------------------------+
  6. | New York | new york |
  7. +-------------+-----------------------------------+

对于 Unicode字符集的排序规则,LOWER ()和 UPPER ()根据排序规则名称中的 Unicode 排序规则算法(UCA)版本工作,如果有的话,如果没有指定版本,则为 UCA 4.0.0。例如,utf8 unicode 520 ci 根据 UCA 5.2.0工作,而 utf8 unicode ci 根据 UCA 4.0.0工作。参见第10.10.1节,《 Unicode字符集》

在以前版本的 MySQL 中,在存储视图定义时,视图中使用的 LOWER ()被重写为 LCASE ()。在 MySQL 5.7中,LOWER ()在这种情况下不会被重写,但是在视图中使用的 LCASE ()会被重写为 LOWER ()。(Bug # 12844279)

并发安全性:多字节安全。

LPAD(str,len,padstr)

返回用字符串 padstr 填充的字符串 str,其长度为 len 字符。如果 str 长于 len,则返回值缩短为 len 字符。

  1. mysql> SELECT LPAD('hi',4,'??');
  2. -> '??hi'
  3. mysql> SELECT LPAD('hi',1,'??');
  4. -> 'h'

LTRIM(str)

删除 str 字符串前的空格,并返回处理后的字符串。

mysql> SELECT LTRIM('  barbar');
        -> 'barbar'

OCT(N)

返回 n 的八进制值的字符串表示形式,其中 n 是BIGINT型的数字。这相当于 CONV (n,10,8) 。如果 n 为 NULL,则返回 NULL。

mysql> SELECT OCT(12);
        -> '14'

REPEAT(str,count)

返回一个包含字符串 str 重复计数次数的字符串。如果 count 小于1,返回一个空字符串。如果 str 或 count 为 NULL,则返回 NULL。

mysql> SELECT REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL'

REPLACE(str,from_str,to_str)

返回字符串 str,其中所有匹配的字符串从 str 被替换为 str。REPLACE ()在搜索 from _ str 时执行区分大小写的匹配。

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

REVERSE(str)

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

mysql> SELECT REVERSE('abc');
        -> 'cba'

RIGHT(str,len)

返回字符串 str 中最右边的 len 个字符,如果参数为 NULL,则返回 NULL。

mysql> SELECT RIGHT('foobarbar', 4);
        -> 'rbar'

RPAD(str,len,padstr)

返回用字符串 padstr 填充的字符串 str 的长度为 len 字符。如果 str 长于 len,则返回值缩短为 len 字符。

mysql> SELECT RPAD('hi',5,'?');
        -> 'hi???'
mysql> SELECT RPAD('hi',1,'?');
        -> 'h'

RTRIM(str)

删除字符串右边的空格。

mysql> SELECT RTRIM('barbar   ');
        -> 'barbar'

SUBSTRING(str,pos) / SUBSTR(str,pos)

字符串截取。

同类函数: