MySQL convierte automáticamente números a cadenas según es necesario y viceversa.
mysql> SELECT 1+'1'; -> 2 mysql> SELECT CONCAT(2,' test'); -> '2 test'
Si quiere convertir un número a cadena explícitamente, use la
función CAST()
:
mysql> SELECT 38.8, CAST(38.8 AS CHAR); -> 38.8, '38.8'
Si una función de cadenas da una cadena binaria como argumento, la cadena resultante también es binaria. Un número convertido a cadena se trata como cadena binaria (esto es, es sensible a mayúsculas en comparaciones). Esto afecta sólo a comparaciones.
Normalmente, si una expresión en una comparación de cadenas es sensible a mayúsculas, la comparación se realiza con sensibilidad a mayúsculas.
expr
LIKE
pat
[ESCAPE
'escape-char
']
Coincidencia de patrones usando comparación mediante
expresiones regulares SQL. Retorna 1
(TRUE
) o 0 (FALSE
). Si
expr
o
pat
es NULL
,
el resultado es NULL
.
El patrón no puede ser una cadena literal. Por ejemplo, puede especificarse como expresión de cadena o columna.
Con LIKE
puede usar los siguientes dos
caracteres comodín en el patrón:
Carácter | Descrición |
% |
Coincidencia de cualquier número de caracteres, incluso cero caracteres |
_ |
Coincide exactemente un carácter |
mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1
Para testear instancias literales de un carácter comodín,
preceda el carácter con el carácter de escape. Si no
especifica el carácter ESCAPE
, se asume
'\
' .
Cadena | Descrición |
\% |
Coincide un carácter '% ' |
\_ |
Coincide un carácter '_ ' |
mysql> SELECT 'David!' LIKE 'David\_'; -> 0 mysql> SELECT 'David_' LIKE 'David\_'; -> 1
Para especificar un carácter de escape distinto, use la
cláusula ESCAPE
:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1
Los siguientes dos comandos ilustran que la comparación de cadenas no son sensibles a mayúsculas a no ser que uno de los operandos sea una cadena binaria:
mysql> SELECT 'abc' LIKE 'ABC'; -> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC'; -> 0
En MySQL, LIKE
se permite en expresiones
numéricas. (Esta es una extensión del SQL estándar
LIKE
.)
mysql> SELECT 10 LIKE '1%'; -> 1
Nota: Debido a que MySQL
usa sintaxis de escape C en cadenas (por ejemplo,
'\n
' para representar carácter de nueva
línea), debe doblar cualquier '\
' que
use en cadenas LIKE
. Por ejemplo, para
buscar '\n
', especifíquelo como
'\\n
'. Para buscar
'\
', especifíquelo como
'\\\\
'; esto es debido a que las
antibarras se eliminan una vez por el parser y otra vez
cuando la coincidencia con el patrón se realiza, dejando
una única antibarra para comparar.
expr
NOT LIKE
pat
[ESCAPE
'escape-char
']
Es lo mismo que NOT
(
.
expr
LIKE
pat
[ESCAPE
'escape-char
'])
,
expr
NOT REGEXP
pat
expr
NOT RLIKE
pat
Es lo mismo que NOT
(
.
expr
REGEXP
pat
)
,
expr
REGEXP
pat
expr
RLIKE
pat
Realiza una comparación de patrones de una expresión de
cadena de caracteres expr
contra
un patrón pat
. El patrón puede
ser una expresión regular extendida. La sintaxis para
expresiones regulares se discute en
Apéndice F, Expresiones regulares en MySQL. Retorna 1 si
expr
coincide con
pat
, de otro modo retorna 0. Si
expr
o
pat
es NULL
,
el resultado es NULL
.
RLIKE
es un sinónimo de
REGEXP
, debido a compatibilidad con
mSQL
.
El patrón no necesita ser una cadena literal. Por ejemplo, puede especificarse como una expresión de cadena o columna.
Nota: Debido a que MySQL usa la sintaxis de escape de C en
cadenas (por ejemplo, '\n
' para
representar una nueva línea), de doblar cualquier
'\
' que use en sus cadenas
REGEXP
.
REGEXP
no es sensible a mayúsculas,
excepto cuando se usa con cadenas binarias.
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
y RLIKE
usan el
conjunto de caracteres actual (ISO-8859-1 Latin1 por
defecto) al decidir el tipo de un carácter.
Atención: Estos operadores
no pueden trabajar con múltiples bytes.
STRCMP(
expr1
,expr2
)
STRCMP()
retorna 0 si las cadenas son
idénticas, -1 si el primer argumento es menor que el
segundo según el orden actual, y 1 en cualquier otro caso.
mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0
En MySQL 5.0, STRCMP()
usa el conjunto de
caracteres actual cuando realizac comparaciones. Esto hace
el comportamiento de comparaciones por defecto insensible a
mayúsculas a no ser que alguno de los operandos sea una
cadena binaria.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.