[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
MySQL automatically converts numbers to strings as necessary, and vice-versa:
mysql> SELECT 1+"1"; -> 2 mysql> SELECT CONCAT(2,' test'); -> '2 test' |
If you want to convert a number to a string explicitly, pass it as the
argument to CONCAT()
.
If a string function is given a binary string as an argument, the resulting string is also a binary string. A number converted to a string is treated as a binary string. This only affects comparisons.
Normally, if any expression in a string comparison is case sensitive, the comparison is performed in case-sensitive fashion.
expr LIKE pat [ESCAPE 'escape-char']
1
(TRUE) or 0
(FALSE). With LIKE
you can use the following two wildcard characters
in the pattern:
Char | Description |
% | Matches any number of characters, even zero characters |
_ | Matches exactly one character |
mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1 |
To test for literal instances of a wildcard character, precede the character
with the escape character. If you don't specify the ESCAPE
character,
`\' is assumed:
String | Description |
\% | Matches one % character |
\_ | Matches one _ character |
mysql> SELECT 'David!' LIKE 'David\_'; -> 0 mysql> SELECT 'David_' LIKE 'David\_'; -> 1 |
To specify a different escape character, use the ESCAPE
clause:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1 |
The following two statements illustrate that string comparisons are not case sensitive unless one of the operands is a binary string:
mysql> SELECT 'abc' LIKE 'ABC'; -> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC'; -> 0 |
LIKE
is allowed on numeric expressions! (This is a MySQL
extension to the SQL-99 LIKE
.)
mysql> SELECT 10 LIKE '1%'; -> 1 |
Note: Because MySQL uses the C escape syntax in strings (for example,
`\n'), you must double any `\' that you use in your LIKE
strings. For example, to search for `\n', specify it as `\\n'. To
search for `\', specify it as `\\\\' (the backslashes are stripped
once by the parser and another time when the pattern match is done, leaving
a single backslash to be matched).
Note: Currently LIKE
is not multi-byte character
safe.
Comparison is done character by character.
MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION] )
MATCH ... AGAINST()
is used for full-text search and returns
relevance - similarity measure between the text in columns
(col1,col2,...)
and the query expr
. Relevance is a
positive floating-point number. Zero relevance means no similarity.
MATCH ... AGAINST()
is available in MySQL version
3.23.23 or later. IN BOOLEAN MODE
extension was added in version
4.0.1, WITH QUERY EXPANSION
was added in 4.1.1.
For details and usage examples, see 13.7 MySQL Full-text Search.
expr NOT LIKE pat [ESCAPE 'escape-char']
Same as NOT (expr LIKE pat [ESCAPE 'escape-char'])
.
expr NOT REGEXP pat
expr NOT RLIKE pat
Same as NOT (expr REGEXP pat)
.
expr REGEXP pat
expr RLIKE pat
expr
against a pattern
pat
. The pattern can be an extended regular expression.
See section F. MySQL Regular Expressions. Returns 1
if expr
matches pat
, otherwise
returns 0
. RLIKE
is a synonym for REGEXP
, provided for
mSQL
compatibility. Note: Because MySQL uses the C escape
syntax in strings (for example, `\n'), you must double any `\' that
you use in your REGEXP
strings. As of MySQL Version 3.23.4,
REGEXP
is not case sensitive for normal (not binary) strings:
mysql> SELECT 'Monty!' REGEXP 'm%y%%'; -> 0 mysql> SELECT 'Monty!' REGEXP '.*'; -> 1 mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; -> 1 mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A"; -> 1 0 mysql> SELECT "a" REGEXP "^[a-d]"; -> 1 |
REGEXP
and RLIKE
use the current character set (ISO-8859-1
Latin1 by default) when deciding the type of a character.
STRCMP(expr1,expr2)
STRCMP()
returns 0
if the strings are the same, -1
if the first
argument is smaller than the second according to the current sort order,
and 1
otherwise:
mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0 |
As of MySQL 4.0,
STRCMP()
uses the current character set when performing comparisons.
This makes the default comparison behavior case insensitive unless
one or both of the operands are binary strings.
Before MySQL 4.0, STRCMP()
is case sensitive.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |