SQL Server - Lo Creo Imposible

 
Vista:

Lo Creo Imposible

Publicado por Amaury (4 intervenciones) el 05/03/2008 19:25:14
QUISIERA SABER SI SE PUEDE EN SQL CONSULTAR UN DATO QUE SE ENCUENTRA EN UNA TABLA DE LA BASE DE DATOS PERO NO TE SABES EL NOMBRE DE LA TABLA, NI EL CAMPO DE LA MISMA, PERO TIENES UN VALOR QUE SE ENCUENTRA EN UNO DE SUS CAMPOS.

LA PREGUNA ES SI SE PODRIA CONSEGUIR EL NOMBRE DEL CAMPO Y LA TABLA EN LA QUE SE ENCUENTRA ESE VALOR.

SI ALGUIEN PUEDE RESPONDER A ESO LE AGRADECERIA QUE ME DIERA LA REPUESTA, ME SERÍA DE MUCHA AYUDA.

GRACIAS POR ADELANTADO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lo Creo Imposible

Publicado por Isaias (3308 intervenciones) el 05/03/2008 20:29:28
Amaury

Has un esfuerzo y escribenos en MAYUSCULAS y minusculas, si lo haces con solo MAYUSCULAS, pareciera que nos estas GRITANDO.

Te dejo el codigo para que lo pruebes:

-- Buscar un dato en TODAS las columnas de TODAS las tablas
Create this procedure in the required database and here is how you run it:

--To search all columns of all tables in Pubs database for the keyword "Computer"
EXEC SearchAllTables 'Computer'
GO

Here is the complete stored procedure code:

CREATE PROC SearchAllTables
(
@SearchStr nvarchar(100)
)
AS
BEGIN

-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of all tables for a given search string
-- Written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
-- Tested on: SQL Server 7.0 and SQL Server 2000
-- Date modified: 28th July 2002 22:50 GMT

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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lo Creo Imposible

Publicado por Amaury (4 intervenciones) el 06/03/2008 14:09:44
Isaias

Te pido disculpas por haberte escrito todo en mayusculas y a la vez te doy las gracias por haberme enviado el codigo, todavía no lo he probado pero con solo verlo me ha gustado. Inmediatamente lo provaré.

Muchas Gracias!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lo Creo Imposible

Publicado por Amaury (4 intervenciones) el 06/03/2008 14:49:43
Isaias

Ya lo he probado y me ha resultado muy bien, te agradezco nuevamente por la ayuda que me has dado.

Solo me quedan dos cosas por decirte

Muchas Gracias y Que Dios esté contigo siempre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lo Creo Imposible

Publicado por Isaias (3308 intervenciones) el 07/03/2008 03:21:04
Muchas gracias Amaury

Dios nos ilumina todos los dias, aun, despues de nuestra estadia por este mundo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar