You are on page 1of 8

https://www.ibercom.com/soporte/index.php?

_m=knowledgebase&_a=viewarticle&kbarticleid=1319

MySQL - Operadores y funciones de comparacion


Autor:

WWW Ibercom, S.L.


Creado en: 16 Jan 2008 03:49 AM

1. Introduccin
En este artculo se explicarn los diversos operadores y funciones de comparacin que contiene MySQL. Va dirigido los usuarios que tenga un nivel de principiante respecto a MySQL y el lenguaje SQL bsicamente, aunque tal vez hay algn apartado que sea de inters para usuarios de niveles superiores. El orden de explicacin de cada operador ser el que se indica en los contenidos de este artculo, que a mi entender es un orden de difictuldad ascendente.

2. Operadores de comparacin
Los operadores de comparacin, como su nombre indica, son aquellos operadores destinados a comparar dos expresiones o valores y que tienen como resultado un valor booleano, ya sea 1 (true) 0 (false) aunque tambin puede devolver NULL. Estos operadores sirven bsicamente para optimizar las consultas que queramos realizar. Cuando digo optimizar me refiero al filtrado de los datos de una base de datos. Los operadores de comparacin se suelen utilizar en la clusula WHERE con la siguiente sintaxis: mysql> SELECT campo1, campo2, ... FROM tabla, ... WHERE expresin1 OPERADOR expresin2; Aunque tambin es posible utilizar los operadores de comparacin en la clusula SELECT con la siguiente sintaxis: mysql> SELECT expresin1 OPERADOR valor expresin2;

A continuacin una tabla de los operadores y funciones de comparacin que aqu se vern:

Operador Significado

= Igual a

Page 1/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

> Mayor que

>= Mayor que o igual a

< Menor que

<= Menor que o igual a

<>, != Diferente a

IS booleano Es 1,0 o NULL

IS NULL Es nulo

BETWEEN Entre dos valores (inclusive)

IN Lista de valores

LIKE Se ajusta a un patrn

REGEXP, RLIKE Se ajusta a un patrn (expresiones regulares)

Page 2/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

GREATEST Mayor argumento

LEAST Menor argumento

STRCMP Compara dos cadenas

Ahora explicar cada uno de estos operadores y funciones por separado pero antes hay que destacar un par de puntos bastante importantes en cuanto a comparaciones entre literales y numricos. Para empezar las expresiones o valores literales, es decir cualquier carcter o cadenas de caracteres, vienen representadas entre comillas simples ('') y en cambio los valores numricos no se deben poner entre comillas. Otro punto bastante importante es la insensibilidad de MySQL ante las maysculas y minsculas. MySQL no diferencia entre maysculas y minsculas a no se que se lo expresemos explcitamente con la funcin BINARY, aqu va un ejemplo: mysql> SELECT 'b' = 'B'; Esta sentencia dara como resultado 1 (true) y aqu se puede comprobar la insensibilidad ante las maysculas y minsculas y ahora un ejemplo con BINARY: mysql> SELECT BINARY 'b' = 'B'; Y esta sentencia da como resultado 0 (false) ya que el cdigo ASCII de 'b' (que es 98) es diferente al cdigo ASCII de 'B' (que es 66). Un factor ms a destacar en las comparaciones con MySQL es que si se compara un literal (que se compone de dgitos numricos como puede ser, '125') con un numrico se hace una especie de conversin forzosa, la cual hace que las dos expresiones o valores a comparar sean de la misma topologa, un ejemplo: mysql> SELECT '125' = 125; Esta sentencia da como resultado 1 (true) por lo que he comentado anteriormente. Una vez teniendo todo esto en cuenta, ya podemos comenzar a explicar cada uno de los operadores y funciones de comparacin.

3. Igual a (=)
Bien... pues comencemos por el operador que creo que es ms fcil y el que si habeis realizado alguna vez una consulta, aunque fuese sencillita, seguramente ya habreis tocado este operador. Hablo del operador "Igual a" (=), este operador compara las dos expresiones o valores y nos devuelve como resultado: 1 (true) si las dos expresiones o valores son iguales 0 (false) si las dos expresiones o valores son diferentes entre ellas. Se utiliza con el smbolo "=". Aqu va un ejemplo y despus una explicacin sobre l: mysql> SELECT * FROM tabla WHERE campo = 1; En esta sentencia se seleccionar todos los campos (*) de tabla donde la comparacin de campo = 1 sea cierta.
Page 3/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

Tambin lo podemos utilizar con valores literales: mysql> SELECT * FROM tabla WHERE campo = 'Juan'; Aqu la sentencia selecciona todos los campos (*) de tabla donde campo tenga el valor de 'Juan'.

4. Mayor que (>)


Seguiremos con otro operador de igual dificultad que el anterior, esta vez hablo del operador "Mayor que" (>). ste tambin compara las dos expresiones o valores (como en cualquier operador que veremos), pero nos dar como resultado 1 (true) cuando el valor de la primera expresin sea mayor que el valor de la segunda expresin y nos dar como resultado 0 (false) cuando el valor de la primera expresin sea menor que el valor de la segunda expresin. Tambin nos dar como resultado 0 (false) cuando los valores de las dos expresiones sean iguales. En cuanto a los literales con este operador, cabe decir que sino se lo indicamos explcitamente con la funcion BINARY no compara valor del cdigo ASCII, es decir que ser lo mismo 'a' que 'A'. Se utiliza con el smbolo ">". Ejemplos: mysql> SELECT * FROM tabla WHERE campo > 12; La sentencia anterior nos devolver todos los campos (*) de tabla donde campo sea mayor que 12. mysql> SELECT * FROM tabla WHERE campo > 'a'; sta nos devuelve todos los campos (*) de tabla donde campo sea mayor que 'a' y como no le hemos indicado explcitamente el BINARY tambin donde campo sea mayor que 'A'.

5. Mayor que o igual a (>=)


Prosigamos con el operador "Mayor que o igual a" (>=), bien pues con este operador se realiza bsicamente lo mismo que en el anterior (Mayor que), pero cuando los valores de las dos expresiones son iguales en lugar de devolver 0 (false), devuelve 1 (true). Es la nica diferencia entre estos dos operadores. Se utiliza con el smbolo ">=". Ejemplos: mysql> SELECT * FROM tabla WHERE campo >= 9; En esta sentencia se seleccionan todos los campos (*) de tabla donde el valor de campo sea mayor que 9 o igual a 9. mysql> SELECT * FROM tabla WHERE campo >= 'B'; Y en esta sentencia se seleccionan todos los campos (*) de tabla donde el valor de campo sea mayor que 'B' o igual a 'B', y acordmonos que MySQL es insensible a las maysculas y minsculas as que tambin se seleccionarn aquellos campos donde campo sea mayor que 'b' o igual que 'b'.

6. Menor que (<)


El operador de comparacin "Menor que" (<) compara las dos expresiones o valores y de esta comparacin obtendremos como resultado: 1 (true) si el valor de la primera expresin es menor al valor de la segunda expresin, 0 (false) si el valor de la primera expresin es mayor al valor de la segunda expresin y si los valores de las dos expresiones son coincidentes. Se utiliza con el smbolo "<". Ejemplos: mysql> SELECT * FROM tabla WHERE campo < 27; Con esta sentencia seleccionamos todos los campos (*) de tabla donde el valor de campo sea
Page 4/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

menor que 27. mysql> SELECT * FROM tabla WHERE campo < 'c'; sta selecciona todos los campos (*) de tabla donde el valor de campo sea menor que 'c'.

7. Menor que o igual a (<=)


El operador "Menor que o igual a" (<=) realiza bsicamente lo mismo que en el anterior (Menor que), pero cuando los valores de las dos expresiones son iguales en lugar de devolver 0 (false), devuelve 1 (true). Es la nica diferencia entre ambos. Se utiliza con el smbolo "<=". Ejemplos: mysql> SELECT * FROM tabla WHERE campo <= 5; En esta sentencia se seleccionan todos los campos (*) de tabla donde el valor de campo sea menor que 5 o igual a 5. mysql> SELECT * FROM tabla WHERE campo <= 'B'; Y en esta sentencia se seleccionan todos los campos (*) de tabla donde el valor de campo sea menor que 'B' o igual a 'B' y tambin se seleccionarn aquellos campos donde campo sea menor que 'b' o igual que 'b'.

8. Diferente a (<>, !=)


Ahora vamos con el operador "Diferente a" (<>,!=), este operador se utiliza para saber si una expresin o valor es diferente a la otra expresin o valor. El resultado de la comparacin con el operador "Diferente a" (<>,!=) nos devolver: 1 (true) cuando las expresiones sean diferentes, es decir no coincidan; y nos devolver 0 (false) cuando las expresiones coincidan. Se puede utilizar con dos smbolos: <> o != y es indiferente cual se utilice. Ejemplos: mysql> SELECT * FROM tabla WHERE campo <> 'Pedro'; Con esta sentencia seleccionamos todos los campos (*) de tabla donde el valor de campo sea diferente al literal 'Pedro'. mysql> SELECT * FROM tabla WHERE campo != 10; Y con esta otra, seleccionamos todos los campos (*) de tabla donde el valor de campo sea diferente a 10.

9. IS
Con el operador "IS" lo que hacemos es comparar una expresin o valor con un valor booleano, el cual puede ser TRUE (verdadero), FALSE (falso) o UNKNOWN.

9.1. IS TRUE
"IS TRUE", con este operador junto al booleano 'TRUE' comparamos que la expresin o valor sea 'TRUE', dando como resultado 1 (true) si la expresin o valor es 'TRUE' y como resultado 0 (false) si la expresin o valor es 'FALSE' o 'NULL'. Ejemplo: mysql> SELECT * FROM tabla WHERE campo IS TRUE; Esta sentencia nos seleccionar todos los campos (*) de tabla donde campo sea cierto.

9.2. IS FALSE
"IS FALSE", es el antnimo de "IS TRUE". Este operador compara que la expresin o valor sea 'FALSE', dando como resultado 1 (true) si la expresin o valor es 'FALSE' y como resultado 0 (false) si la expresin o valor es 'TRUE' o 'NULL'. Ejemplo:
Page 5/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

mysql> SELECT * FROM tabla WHERE campo IS FALSE; Esta sentencia nos seleccionar todos los campos (*) de tabla donde campo sea falso.

9.3. IS NULL
Con el operador "IS NULL" comparamos que la expresin o valor sea nula, dando como resultado 1 (true) en caso de que s sea nula 0 en caso de que la expresin o valor no sea nula. Ejemplo: mysql> SELECT * FROM tabla WHERE campo IS NULL; Esta sentencia nos seleccionar todos los campos (*) de tabla donde campo sea nulo.

10. GREATEST
Con GREATEST tenemos la posibilidad de comparar a varios argumentos y nos devolver el que sea mayor de todos estos argumentos. Se utiliza con la siguiente sintaxis: GREATEST(valor1,valor2,valor3,...) Ejemplo: mysql> SELECT GREATEST(10,20,34,543,4,76); Esta SELECT nos devolver el nmero 543 ya que es el mayor de todos los valores que hay en GREATEST.

11. LEAST
LEAST es lo contrario que GREATEST, es decir compara a varios argumentos y nos devuleve el que sea menor de todos. Se utiliza con la siguiente sintaxis: LEAST(valor1,valor2,valor3,...) Ejemplo: mysql> SELECT LEAST(10,20,34,543,4,76); Esta SELECT nos devuelve el nmero 4 por ser el menor de todos los valores que hay en LEAST.

12. IN
Prosigamos con el operador IN, el cual utilizamos para comparar una expresin o valor con una lista de valores. Nos da como resultado 1 (true) cuando la expresin o valor se encuentra en la lista de valores y nos da 0 (false) cuando no se encuentra. Se utiliza con la siguiente sintaxis: IN(valor1,valor2,valor3,...) Ejemplo: mysql> SELECT * FROM tabla WHERE campo IN(1,3,5,7,9); Con esta sentencia seleccionamos todos los campos (*) de tabla donde el valor de campo se encuentre dentro de la lista (1,3,5,7,9).

13. BETWEEN
Ahora toca este operador que es bastante conocido tambin y es BETWEEN, se utiliza para comparar una expresin o valor con un rango de valores inclusive los valores que limitan este rango. La comparacin con BETWEEN devuelve 1 (true) cuando la expresin o valor estn dentro del rango y devuelve 0 (false) cuando no lo estn. Se utiliza en la clusula WHERE con la siguiente sintaxis: BETWEEN valor_mnimo AND valor_mximo; Ejemplo: mysql> SELECT * FROM tabla WHERE campo BETWEEN 10 AND 20; Seleccionamos todos los campos (*) de tabla donde campo est entre 10 y 20 ambos icludos.
Page 6/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

14. STRCMP
STRCMP es una funcin de comparacin de dos cadena de caracteres. A muchos ya os sonar si habeis tocado algun que otro lenguaje de programacin como C o PHP y funciona muy similar, por no decir igual, a las funciones de estos lenguajes. Esta funcin nos devuelve el valor 0 cuando las dos cadenas de caracteres a comparar son exactamente igual, nos devuelve -1 cuando la primera cadena de caracteres tiene un valor ms pequeo que la segunda cadena de caracteres y por ltimo, nos devuelve 1 cuando la primera cadena de caracteres tiene un valor mayor que la segunda cadena de caracteres. Se utiliza de la siguiente forma: STRCMP('cadena1','cadena2') Ejemplo: mysql> SELECT STRCMP('cadena1','cadena'); Nos devolver un 1 ya que la primera cadena contiene ms caracteres y entonces su cdigo ASCII es superior al de la segunda cadena (cadena) que no contienen tantos caracteres. NOTA: Esta funcin compara los cdigos ASCII que tiene cada caracter, pero si no se le indica con la funcin BINARY.. tomar igual la 'a' que la 'A' siendo en realidad diferentes cdigos ASCII. Ejemplo con BINARY: mysql> SELECT STRCMP(BINARY 'a', 'A'); Aqu nos dar como resultado un 1 ya que el cdigo ASCII de 'a' es mayor al cdigo ASCII de 'A', en cambio si no hubiesemos puesto el BINARY nos hubiese dado como resultado un 0.

15. LIKE
Bueno... LIKE tambin es una funcin de comparacin entre una cadena de caracteres y un patrn que nosotros imponemos. Esta funcin es bastante utilizada por la sencillez de slo tener 2 comodines (%,_). Devuelve 1 (true) cuando la cadena de caracteres comparada se rige por el patrn impuesto y devuelve 0 cuando no lo hace. Tambin dar como resultado NULL si la cadena que queremos comparar es NULL. Su sintaxis es la siguiente: cadena LIKE patrn [ESCAPE 'carcter_escape'] ESCAPE 'carcter_escape' sirve para cuando queramos indicar en el patrn que la cadena debe contener o el smbolo de porcentaje % o _, al ser comodines debemos indicarle que en ese momento no sern comodices y esto lo conseguimos con el carcter de escape. Ejemplo: mysql> SELECT * FROM tabla WHERE campo LIKE 'Pe%_dro'; mysql> SELECT * FROM tabla WHERE campo LIKE 'Pe%._dro' ESCAPE '.'; En ambas sentencias selecionamos todos los campos de tabla cuando campo se rija con el patrn. En la primera sentencia utilizamos el carcter de escape por defecto que es '' y en la segunda sentencia le indicamos cual queremos que sea nuestro carcter de escape, en este caso '.'.

15.1. Comodines
Para que el patrn del LIKE sea ms efectivo existen dos tipos de comodines como ya hemos dicho antes: Uno de ellos es el smbolo de porcentaje (%), el cual representa a cualquier secuencia de cero o ms caracteres. Tambin est el comodn (_), que ste representa a un solo carcter.

16. REGEXP, RLIKE


Por ltimo una funcin muy parecida a LIKE pero en lugar de utilizar los comodines % y _, se utilizan expresiones regulares. Esta funcin se puede llamar de dos formas: REGEXP o RLIKE, es

Page 7/8 Soporte OnLine

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1319

indiferente cual se utilice pues la funcin es la misma. Devuelve 1 si la cadena de caracteres a comparar coincide con el patrn y 0 sino coincide. Tambin dar como resultado NULL si la cadena que queremos comparar es NULL. La sintaxis de REGEXP o RLIKE: cadena REGEXP patrn Un ejemplo de REGEXP: mysql> SELECT 'hola' REGEXP '[h-z]*' La SELECT nos devolver 1 ya que la cadena coincide con el patrn. No explico ms sobre esta funcin porque no entiendo de expresiones regulares, era para dar una idea de que tambin se podan utilizar en MySQL.

Fuente http://PHP-Hispano.NET

Page 8/8 Soporte OnLine

You might also like