Busqueda de una cadena de caracteres en una BD

16/05/2007 - 00:52 por Duvan | Informe spam
Hola a todos requiero de su ayuda para la siguiente labor tengo una Base de
Datos con 700 tablas y debo realizar una busqueda de una cadena de caracteres
( basicamente una palabra ) dentro de esa Base de Datos en cada una de las
tablas en todos los campos, alguien sabe como hacerlo?

De antemano muchas gracias por su ayuda.

Preguntas similare

Leer las respuestas

#6 Duvan
24/05/2007 - 19:44 | Informe spam
Gracias Isaias eres muy amable. Funciono perfecto.

"Isaias" wrote:

Bueno, los creditos estan insertos en el store.


Saludos
IIslas


"Isaias" wrote:

> Duvan / Gustavo
>
> No tengo los creditos de este store, pero creo que es lo que necesita Duvan:
>
> Create this procedure in the required database and here is how you run it:
>
> "Computer"
> EXEC SearchAllTables 'Computer'
> GO
>
> Here is the complete stored procedure code:
>
>
> CREATE PROC SearchAllTables
> (
> @SearchStr nvarchar(100)
> )
> AS
> BEGIN
>
>
>
> CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
>
> SET NOCOUNT ON
>
> DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2
> nvarchar(110)
> SET @TableName = ''
> SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
>
> WHILE @TableName IS NOT NULL
> BEGIN
> SET @ColumnName = ''
> SET @TableName =
> (
> SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
> FROM INFORMATION_SCHEMA.TABLES
> WHERE TABLE_TYPE = 'BASE TABLE'
> AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
> AND OBJECTPROPERTY(
> OBJECT_ID(
> QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
> ), 'IsMSShipped'
> ) = 0
> )
>
> WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
> BEGIN
> SET @ColumnName > > (
> SELECT MIN(QUOTENAME(COLUMN_NAME))
> FROM INFORMATION_SCHEMA.COLUMNS
> WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
> AND TABLE_NAME = PARSENAME(@TableName, 1)
> AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
> AND QUOTENAME(COLUMN_NAME) > @ColumnName
> )
>
> IF @ColumnName IS NOT NULL
> BEGIN
> INSERT INTO #Results
> EXEC
> (
> 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' +
> @ColumnName + ', 3630)
> FROM ' + @TableName + ' (NOLOCK) ' +
> ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
> )
> END
> END
> END
>
> SELECT ColumnName, ColumnValue FROM #Results
> END
>
> Saludos
> IIslas
>
>
> "Duvan" wrote:
>
> > Hola Gustavo lo que te entiendo que tu me explicas es buscar la palabra pero
> > que corresponda a un campo dado en una tabla, pero la palabra que necesito
> > buscar no es de un campo si no el contenido de ese campo.
> >
> > "Gustavo Larriera (MVP)" wrote:
> >
> > > Puedes escribir un procedimiento almacenado que recorra cada columna de
> > > cada tabla. Posiblemente un cursor sea el camino fácil, asumo que es una
> > > tarea para hacer una única vez y por alguna razón patológica que
> > > requiera lo que quieres hacer.
> > >
> > > Para conocer los nombres de todas las tablas usa la vista
> > > INFORMATION_SCHEMA.Tables.
> > >
> > > Para conocer los nombres de todas las columnas de una tabla, usa la
> > > vista INFORMATION_SCHEMA.Columns.
> > >
> > > Una vez que tienes una columna C de una tabla T, usa dinámicamente una
> > > consulta: SELECT C FROM T WHERE C = 'palabrabuscada'
> > >
> > >
> > > Tal vez antes de seguir para adelante podrías contarnos un poco más por
> > > qué quieres hacer ese proceso tan digamos, sin animos de ofender,
> > > extraño?
> > >
> > > Gustavo Larriera, MVP
> > > Solid Quality
> > > Blog: http://blogs.solidq.com/ES/glarriera
> > > MVP Profile: https://mvp.support.microsoft.com/p...o.Larriera
> > > Este mensaje se proporciona tal como es, sin garantías de ninguna clase
> > > / This message is provided "AS IS" with no warranties expressed or
> > > implied, and confers no rights.
> > >
> > >
> > > In article ,
> > > says...
> > > > Hola a todos requiero de su ayuda para la siguiente labor tengo una Base de
> > > > Datos con 700 tablas y debo realizar una busqueda de una cadena de caracteres
> > > > ( basicamente una palabra ) dentro de esa Base de Datos en cada una de las
> > > > tablas en todos los campos, alguien sabe como hacerlo?
> > > >
> > > > De antemano muchas gracias por su ayuda.
> > > >
> > >
> > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida