Archivo de la categoría: Bases de datos

Comodines en SQL

Para realizar búsquedas en sql empleando comodines:

  • Para reemplazar una cadena cualquiera “%”:

Ejemplo:

“select * from nombreTabla where nombreCampo like ‘textoBuscado%’;

La búsqueda nos devolverá los registros de la tabla “nombreTabla” que en el campo “nombreCampo” comiencen por “textoBuscado”. Si queremos que textoBuscado pueda estar en cualquier posición podemos utilizar la cadena ‘%textoBuscado%’ en la expresión del “like”.

  • Para reemplazar un único carácter:

En lugar de “%” empleado en el ejemplo anterior lo podemos hacer usando “_”. Es el equivalente a emplear el “?” cuando reemplazamos un único carácter por ejemplo usando el “dir” o “ls”. Por ejemplo para mostrar los registros de la década de 2010 a 2019 podemos realizar la consulta con like ‘201_’ suponiendo que el campo que contiene el año sea de tipo cadena.

  • Que sucede cuando necesitamos reemplazar caracteres especiales por ejemplo ‘_’. En este caso podemos utilizar la expresión:

like ‘expresion’ escape ‘elCaracter’

siendo ‘expresion’: contiene el filtro que incluye el carácter especial y un carácter que usamos para identificarlo y que luego incluiremos en lugar de ‘elCaracter’ ejemplo:

select * from nombreTabla where nombreCampo like ‘1TB#_%’ escape ‘#’

el resultado de la consulta nos devolverá aquellos registros que en el campo nombreCampo comiencen por ‘1TB_’

Caso especial del ejemplo anterior. Si queremos buscar aquellos que contengan el carácter ‘/’ podremos hacerlo con

select * from nombreTabla where nombreCampo like ‘Z:\\1TB%’ escape ‘|’

nos devolverá los que en nombreCampo comiencen por ‘Z:\1TB’

Buscando un valor en oracle

Código para la búsqueda de un texto contenido en un campo de una tabla de Oracle (Tabla y nombre del campo desconocida). El siguiente ejemplo busca la palabra texto en todos los campos de todas las tablas de la base de datos a la que estamos conectados en este momento.

variable val varchar2(10)
exec :val := ‘texto’
SELECT DISTINCT SUBSTR (:val, 1, 11) “Searchword”,
SUBSTR (table_name, 1, 14) “Table”,
SUBSTR (column_name, 1, 14) “Column”
FROM cols,
TABLE (xmlsequence (dbms_xmlgen.getxmltype (‘select ‘
|| column_name
|| ‘ from ‘
|| table_name
|| ‘ where upper(‘
|| column_name
|| ‘) like upper(”%’
|| :val
|| ‘%”)’ ).extract (‘ROWSET/ROW/*’) ) ) t
ORDER BY “Table”