33 - Búsqueda de patrones (like - not like) |
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla si existe:
if object_id ('libros') is not null drop table libros;
Creamos la tabla:
create table libros( codigo int identity, titulo varchar(40) not null, autor varchar(20) default 'Desconocido', editorial varchar(20), precio decimal(6,2), primary key(codigo) );
Ingresamos algunos registros:
insert into libros values('El aleph','Borges','Emece',15.90); insert into libros values('Antología poética','J. L. Borges','Planeta',null); insert into libros values('Alicia en el pais de las maravillas','Lewis Carroll',null,19.90); insert into libros values('Matematica estas ahi','Paenza','Siglo XXI',15); insert into libros values('Martin Fierro','Jose Hernandez',default,40); insert into libros values('Aprenda PHP','Mario Molina','Nuevo siglo',56.50);
Recuperamos todos los libros que contengan en el campo "autor" la cadena "Borges":
select * from libros where autor like '%Borges%';
Seleccionamos los libros cuyos títulos comienzan con la letra "M":
select * from libros where titulo like 'M%';
Seleccionamos todos los títulos que NO comienzan con "M":
select * from libros where titulo not like 'M%';
Si queremos ver los libros de "Lewis Carroll" pero no recordamos si se escribe "Carroll" o "Carrolt", podemos emplear el comodín "_" (guión bajo) y establecer la siguiente condición:
select * from libros where autor like '%Carrol_';
Buscamos los libros cuya editorial comienza con las letras entre la "P" y la "S":
select titulo,autor,editorial from libros where editorial like '[P-S]%';
Seleccionamos los libros cuya editorial NO comienza con las letras "P" ni "N":
select titulo,autor,editorial from libros where editorial like '[^PN]%';
Recuperamos todos los libros cuyo precio se encuentra entre 10.00 y 19.99:
select titulo,precio from libros where precio like '1_.%';
Recuperamos los libros que NO incluyen centavos en sus precios:
select titulo,precio from libros where precio like '%.00';