32 - Búsqueda de patrones (regexp)


Problema:

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

Eliminamos la tabla, si existe.

Creamos la tabla:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  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);

Para buscar libros cuyos títulos contengan la cadena "Ma" usamos:

 select titulo from libros
  where titulo regexp 'Ma';

Retorna 4 registros.

Para buscar los registros cuyos autores tienen al menos una "h" o una "k" o una "w" tipeamos:

 select titulo,autor from libros
  where autor regexp '[hkw]';

4 registros devueltos.

Para buscar los libros cuyos autores no tienen ni "h" o una "k" o una "w" tipeamos:

 select titulo,autor from libros
  where autor not regexp '[hkw]';

Selecciona 5 registros.

Para buscar los autores que tienen por lo menos una de las letras de la "a" hasta la "d", es decir, "a,b,c,d", usamos:

 select autor from libros
  where autor regexp '[a-d]';

Selecciona 7 registros.

Para ver los títulos que comienzan con "A" tipeamos:

 select titulo from libros
  where titulo regexp '^A';

Devuelve 3 registros.

Para ver los títulos que terminan en "HP" usamos:

 select titulo from libros
  where titulo regexp 'HP$';

Retorna 2 registros.

Para buscar títulos que contengan una "a" luego un caracter cualquiera y luego una "e" utilizamos la siguiente sentencia:

 select titulo from libros
  where titulo regexp 'a.e';

Retorna 2 registros.

Podemos mostrar los títulos que contienen una "a" seguida de 2 caracteres y luego una "e":

 select titulo from libros
  where titulo regexp 'a..e';

Selecciona 3 registros.

Para buscar autores que tengan 6 caracteres exactamente usamos:

 select autor from libros
  where autor regexp '^......$';

Devuelve 1 registro.

Para buscar autores que tengan al menos 6 caracteres usamos:

 select autor from libros
  where autor regexp '......';

Selecciona 9 registros.

Para buscar títulos que contengan 2 letras "a" usamos:

 select titulo from libros
  where titulo regexp 'a.*a';

Selecciona 6 registros.




Retornar