31 - Búsqueda de patrones (like y not like)


Problema:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe.

Creamos la tabla con la siguiente estructura:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  primary key(codigo)
 );

Ingresamos algunos registros:

 insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Planeta',15.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Martin Fierro','Jose Hernandez','Emece',22.90);
 insert into libros (titulo,autor,editorial,precio)
  values('Antologia poetica','J.L. Borges','Planeta',39);
 insert into libros (titulo,autor,editorial,precio)
  values('Aprenda PHP','Mario Molina','Emece',19.50);
 insert into libros (titulo,autor,editorial,precio)
  values('Cervantes y el quijote','Bioy Casare- J.L. Borges','Paidos',35.40);
 insert into libros (titulo,autor,editorial,precio)
  values('Manual de PHP', 'J.C. Paez', 'Paidos',19);
 insert into libros (titulo,autor,editorial,precio)
  values('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00);
 insert into libros (titulo,autor,editorial,precio)
  values('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00);
 insert into libros (titulo,autor,editorial,precio)
  values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',36.00);

Recuperamos los libros cuyo autor sea igual a la cadena "Borges":

 select * from libros
  where autor='Borges';

Nos devuelve 1 registro.

Recuperamos todos los registros cuyo autor contenga la cadena "Borges":

 select * from libros
  where autor like '%Borges%';

El resultado nos devuelve 3 registros.

Para seleccionar todos los libros que comiencen con "A":

 select * from libros
 where titulo like 'A%';

Para seleccionar todos los libros que no comiencen con "A":

 select * from libros
  where titulo not like 'A%';

Queremos los libros de "Lewis Carroll" y no recordamos si se escribe "Carroll" o "Carrolt", entonces tipeamos:

 select * from libros
  where autor like '%Carrol_';

Buscamos todos los libros de "Harry Potter":

 select * from libros
  where titulo like '%Harry Potter%';

Todos los libros sobre "PHP":

 select * from libros
  where titulo like '%PHP%';



Retornar