Usuário com melhor resposta
Ajuda COALESCE

Pergunta
-
Boa tarde Amigos,
Gostaria de saber se alguem pode me ajudar e se é possivel fazer o que quero fazer.
Tenho o seguinte codigo
DECLARE @codigo varchar(10) set @codigo = '' select TER12.TerDoc, TER12.TerBRepCod from ter12 WHERE TerBRepCod = COALESCE(NULLIF(@codigo,0), TerBRepCod)
Quando passo o valor de @codigo = ' ' ele me retorna todos os registros que sejam maior ou igual a 0, eu gostaria que alem de retornar os que são igual ou maior que zero me retornasse tambem os registros NULL
Sera isso possivel ?
Obrigado
Juliano Landim
Respostas
-
Muito obrigado Durval, eu tentei e esta dando o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near '='.
Tentei tirar um I do IF , (pois vc colocou IIF , nao sei se esta certo) e deu o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near the keyword 'IF'.
Abraço
Juliano Landim
Juliano,
O comando IIF faz parte dos novos recursos T-SQL no SQL Server 2012 e eu pensei que era esta a versão que você estava trabalhando.
De qualquer forma, mesmo você trabalhando em um ambiente "alternativo" você deve conseguir utilizar a consulta com CASE no lugar do IIF.
Segue o modelo abaixo para você adaptar no seu script:
DECLARE @codigo varchar(10) set @codigo = '' SELECT TER12.TerDoc, TER12.TerBRepCod FROM ter12 WHERE TerBRepCod = COALESCE(@codigo, (CASE WHEN @codigo = '' THEN 0 ELSE NULL END), TerBRepCod)
Caso você queira saber mais sobre os comandos:
- IIF ( http://technet.microsoft.com/pt-br/library/hh213574.aspx )
- CASE ( http://technet.microsoft.com/pt-br/library/ms181765(v=sql.100).aspx )
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta JulianoLandim sábado, 22 de fevereiro de 2014 05:18
Todas as Respostas
-
-
-
Obrigado por responder, mas preciso de algo que seja feito com o COALESCE, pois quando eu nao impormar nenhum valor para TerBRepCod ele me traz todos os registros, inclusive os null.
[]'s
Juliano,
Tente executar o script abaixo para verificar se atende à estes requisitos que você precisa.
DECLARE @codigo varchar(10) set @codigo = '' SELECT TER12.TerDoc, TER12.TerBRepCod FROM ter12 WHERE TerBRepCod = COALESCE(@codigo, IIF(@codigo = '',0, NULL), TerBRepCod)
Para maiores informações sobre o uso do COALESCE, veja o link abaixo:
http://msdn.microsoft.com/pt-br/library/ms190349.aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
Muito obrigado Durval, eu tentei e esta dando o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near '='.
Tentei tirar um I do IF , (pois vc colocou IIF , nao sei se esta certo) e deu o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near the keyword 'IF'.
Abraço
Juliano Landim
-
Muito obrigado Durval, eu tentei e esta dando o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near '='.
Tentei tirar um I do IF , (pois vc colocou IIF , nao sei se esta certo) e deu o seguinte erro
Error : [FreeTDS][SQL Server]Incorrect syntax near the keyword 'IF'.
Abraço
Juliano Landim
Juliano,
O comando IIF faz parte dos novos recursos T-SQL no SQL Server 2012 e eu pensei que era esta a versão que você estava trabalhando.
De qualquer forma, mesmo você trabalhando em um ambiente "alternativo" você deve conseguir utilizar a consulta com CASE no lugar do IIF.
Segue o modelo abaixo para você adaptar no seu script:
DECLARE @codigo varchar(10) set @codigo = '' SELECT TER12.TerDoc, TER12.TerBRepCod FROM ter12 WHERE TerBRepCod = COALESCE(@codigo, (CASE WHEN @codigo = '' THEN 0 ELSE NULL END), TerBRepCod)
Caso você queira saber mais sobre os comandos:
- IIF ( http://technet.microsoft.com/pt-br/library/hh213574.aspx )
- CASE ( http://technet.microsoft.com/pt-br/library/ms181765(v=sql.100).aspx )
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta JulianoLandim sábado, 22 de fevereiro de 2014 05:18
-
-