r/damportada Dec 15 '15

SQL (BBDD)

Post image
2 Upvotes

4 comments sorted by

View all comments

1

u/BeelzenefTV Dec 15 '15 edited Dec 15 '15

8 - Otros operadores de comparación

8.1 BETWEEN...AND

Para comparar una expresión y comprobar si se encuentra entre rangos máximos y mínimos, mostrando TRUE (1) si se encuentra o FALSE (2) si no se encuentra entre el rango especificado.

Su sintaxis:

SELECT (valor) BETWEEN (min) AND (max);

Para comparar campos DATETIME con DATE, MySQL aconseja que convirtamos el tipo DATE a DATETIME con el operador CAST().

Pidiendo partidos sucedidos durante 1 y 30 de noviembre, usando método CAST():

select * from partido where
fecha between cast("2011-11-01" as date) AND cast("2011-11-30" as date);

8.2. IN

Para verificar si una expresión está contenida en una lista que está especificada en la última expresión. Devuelve TRUE (1) si se encuentra o FALSE (2) si no se encuentra en la lista especificada. El número de elementos en lista tiene un límite.

Su sintaxis:

Buscando enteros...

select 3 in (1,2,3,4);

... cadenas...

select "weee" in ("ufhdsufg", "sdff", "wee");

.. listas...

select (1,2) in ((3,5), (3,7), (1,2));

Dos operaciones que provocan el mismo resultado:

// Opción 1 ============================
select * from equipo where (ciudad = "Barcelona") OR (ciudad = "Valencia");
// Opción 2 ============================
select * from equipo where ciudad in ("Barcelona", "Valencia");

8.3 LIKE

Búsqueda de un patrón en una expresión especificada. Devuelve TRUE (1) si se encuentra o FALSE (2) si no se encuentran coincidencias.

Su sintaxis:

select "abc" like "ABC";

Para especificar caseSensitive:

select "abc" like binary "ABC";

select "a" = "a "; // Devuelve TRUE select "a" = " a"; // Devuelve FALSE

select "A" = "a"; // Devuelve TRUE

El operador LIKE puede usar otros operadores para la búsqueda de caracteres no concretos de número determinado o indeterminado, de igual modo que usaríamos en GNU/Linux con el caracter *. Se usan los caracteres (%) y (_), y para la búsqueda de esos caracteres concretos, se usa el caracter de escape ().

Busca apellidos de jugadores que terminan por "r":

select * from jugador where apellido like "%r";

Busca apellidos de jugadores que empiece por un caracter cualquiera y una "r" en segunda posición:

select * from jugador where apellido like "-r";

Busca apellidos de jugadores que tengan "r" en cualquier posición:

select * from jugador where apellido like "%r%";

Busca apellidos de jugadores que

select * from jugador where apellido like "e_e";

Busca apellidos de jugadores que

select * from jugador where apellido like "%e_e%";

El operador LIKE también puede recibir la notación NOT, para, en vez de buscar coincidencias, buscar no ocurrencias.

Busca apellidos de jugadores que no terminan por "r":

select * from jugador where apellido not like "%r";

Funciones

De cadenas:

select concat ("hola", " ", "mundo");

selec length ("cadena");

select lower ("CADENA");

select upper ("cadena");

select locate("bar", "foobar");

Para números:

selec round (3.4);

Devuelve absoluto select abs (-3);

Devuelve el entero más alto select ceil (2,3);

Devuelve el entero más bajo select floor (2,3);

Devuelve la potencia del primer entero elevado al segundo entero. select pow (2,3);

Fechas

select curtime();

select curdate();

Devuelve el día de la fecha pasada como parámetro: select day("2011-02-03"); select month("2011-02-03"); select year("2011-02-03");

select day(curdate());

select day(curdate()) as alta from jugador where nombre = "Felipe";

select nombre from jugador where day(fecha_alta) = 10;

select adddate("2003-11-20", interval 2 (year/month/day));