Solución:
Puedes usar in
:
SELECT *
FROM testing
WHERE 'foo' in (col1, col2, col3, . . . );
Primer método (probado)
Primero obtenga la lista de columnas en la variable de cadena separadas por comas y luego puede buscar ‘foo’ usando esa variable mediante el uso de IN
Verifique el procedimiento almacenado a continuación, que primero obtiene columnas y luego busca una cadena:
DECLARE @TABLE_NAME VARCHAR(128)
DECLARE @SCHEMA_NAME VARCHAR(128)
-----------------------------------------------------------------------
-- Set up the name of the table here :
SET @TABLE_NAME = 'testing'
-- Set up the name of the schema here, or just leave set to 'dbo' :
SET @SCHEMA_NAME = 'dbo'
-----------------------------------------------------------------------
DECLARE @vvc_ColumnName VARCHAR(128)
DECLARE @vvc_ColumnList VARCHAR(MAX)
IF @SCHEMA_NAME =''
BEGIN
PRINT 'Error : No schema defined!'
RETURN
END
IF NOT EXISTS (SELECT * FROM sys.tables T JOIN sys.schemas S
ON T.schema_id=S.schema_id
WHERE [email protected]_NAME AND [email protected]_NAME)
BEGIN
PRINT 'Error : The table '''[email protected]_NAME+''' in schema '''+
@SCHEMA_NAME+''' does not exist in this database!'
RETURN
END
DECLARE TableCursor CURSOR FAST_FORWARD FOR
SELECT CASE WHEN PATINDEX('% %',C.name) > 0
THEN '['+ C.name +']'
ELSE C.name
END
FROM sys.columns C
JOIN sys.tables T
ON C.object_id = T.object_id
JOIN sys.schemas S
ON S.schema_id = T.schema_id
WHERE T.name = @TABLE_NAME
AND S.name = @SCHEMA_NAME
ORDER BY column_id
SET @vvc_ColumnList=""
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @vvc_ColumnName
WHILE @@FETCH_STATUS=0
BEGIN
SET @vvc_ColumnList = @vvc_ColumnList + @vvc_ColumnName
-- get the details of the next column
FETCH NEXT FROM TableCursor INTO @vvc_ColumnName
-- add a comma if we are not at the end of the row
IF @@FETCH_STATUS=0
SET @vvc_ColumnList = @vvc_ColumnList + ','
END
CLOSE TableCursor
DEALLOCATE TableCursor
-- Now search for `foo`
SELECT *
FROM testing
WHERE 'foo' in (@vvc_ColumnList );
2do método
En el servidor SQL, puede obtener la identificación del objeto de la tabla y luego, con esa identificación del objeto, puede obtener columnas. En ese caso será como se muestra a continuación:
Paso 1: Primero obtenga el ID de objeto de la tabla
select * from sys.tables order by name
Paso 2: Ahora obtenga columnas de su tabla y busque en ella:
select * from testing where 'foo' in (select name from sys.columns where object_id =1977058079)
Nota: object_id es lo que obtiene en el primer paso para su tabla relevante
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)