buscar numero en toda la base
Publicado por Marcos (4 intervenciones) el 06/09/2017 21:54:15
Estimados, muy buenas tardes
Por favor requiero de su sabiduría...
Dada la necesidad de buscar un texto especifico en toda la base (soy nuevo en el trabajo y no hay documentación de la estructura de la base de datos) , conseguí con un amigo el siguiente procedimiento que funciona a la perfección buscando un texto o parte de un texto en toda la base , pero ahora necesito adaptarlo para que haga la misma función pero buscando un numero en todas las tablas y todos los campos (obviamente no necesito buscar parte del numero sino la coincidencia exacta)
Agradezco de antemano su ayuda .
Por favor requiero de su sabiduría...
Dada la necesidad de buscar un texto especifico en toda la base (soy nuevo en el trabajo y no hay documentación de la estructura de la base de datos) , conseguí con un amigo el siguiente procedimiento que funciona a la perfección buscando un texto o parte de un texto en toda la base , pero ahora necesito adaptarlo para que haga la misma función pero buscando un numero en todas las tablas y todos los campos (obviamente no necesito buscar parte del numero sino la coincidencia exacta)
Agradezco de antemano su ayuda .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DECLARE @resultados TABLE (columna nvarchar(370), valor nvarchar(3630))
DECLARE @tabla nvarchar(256), @columna nvarchar(128), @cadenaBuscar nvarchar(110)
SET @tabla = ''
SET @cadenaBuscar = QUOTENAME('%TEXTOABUSCAR%','''')
WHILE @tabla IS NOT NULL
BEGIN
SET @columna = ''
SET @tabla =
(SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @tabla AND OBJECTPROPERTY(OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0)
WHILE (@tabla IS NOT NULL) AND (@columna IS NOT NULL)
BEGIN
SET @columna = (SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@tabla, 2) AND TABLE_NAME = PARSENAME(@tabla, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') AND QUOTENAME(COLUMN_NAME) > @columna)
IF @columna IS NOT NULL
BEGIN
INSERT INTO @resultados
EXEC ( 'SELECT ''' + @tabla + '.' + @columna + ''', LEFT(' + @columna + ', 3630) FROM ' + @tabla + ' (NOLOCK) ' + ' WHERE ' + @columna + ' LIKE ' + @cadenaBuscar )
END
END
END
SELECT columna, valor FROM @resultados
Valora esta pregunta
0