Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quero fazer um select que me permita **escolher em qual coluna a pesquisa deverá ocorrer**.
Na minha cabeça a coisa deveria ser com essa lógica:
DECLARE
@strPesquisa varchar(60)
, @colunaPesquisa varchar(60)
SET @colunaPesquisa = 'nome'
SET @strPesquisa = 'Al Pacino'
SELECT * FROM minhaTabela WHERE
@colunaPesquisa LIKE '%'+ @strPesquisa +'%'
Claro que essa sintaxe não funciona. Mas a lógica seria essa.
Com crio isso?
Grato.Cara, isso me ajudou bastante. Agradeço bastante.
Pelo que entendi, para atingir meu objetivo terei que montar meu SELECT basicamente fazendo concatenações (colocando tudo dentro de uma variável para depois executar com uma query propriamente dito). Essa "técnica" deixa a programação uma salada (pois minha consulta é grande), mas vai funcionar.
Mas não conseguir fazer funcionar usando VIEW (como no exemplo do link).
******* isso funciona
set @view = 'dbo.minhaTab'
set @coluna = 'nome'
set @variavel = 'Leo'
SET @sql = 'select nome from ' + @view + ' where ' + @coluna + ' LIKE ' + '''%'+@variavel+'%'''
EXEC (@sql)
******** isso não funciona (chamando uma view, ao invés de tabela)
set @view = 'dbo.minhaView'
set @coluna = 'nome'
set @variavel = 'Leo'
SET @sql = 'select nome from ' + @view + ' where ' + @coluna + ' LIKE ' + '''%'+@variavel+'%'''
EXEC (@sql)
Usando a função PRINT aparece:
select * from dbo.view_selMailing where nome LIKE '%Leo%'
Diante disso penso que o certo seria:
1) Recuperar o resultado na view (a consulta "bruta").
2) Colocar esse resultado numa tabela temporária
3) Executar a consulta dinâmica com base na tabela temporária.
Acha uma boa abordagem? Acha que a performance pode ficar muito ruim?
Tenho cera de 10K registros.
Grato.Não creio precisar de views , bastaria montar os slqs dinâmicos.
Ok. Super obrigado!
Veja se isto ajuda.
Veja também metadados.