none
Como armazenar o resultado de uma substring em uma variavel para comparação com um campo de outra tabela RRS feed

  • Pergunta

  • Bom dia, preciso fazer uma consulta em uma tabela e nesta consulta usar a clausula substring para extrair apenas os numeros de um campo e armazenar este resultado em uma variavel (int) para comparar esta variavel com um campo de outra tabela. 
    terça-feira, 15 de outubro de 2013 12:20

Respostas

  • Olá Celso,

    Veja se executando a query direto não atende a sua necessidade.

    Exemplo:

    select * 
    from fxcx as f
    where exists (	select 1 
    		from cpartida as c
    		where cast(substring(c.integrachave,2, len(c.integrachave))as int) = f.idxcx 
    				and codlote = 70000 
    				and codcoligada = 1)
    

    Assim você retorna os registros em uma única execução.

    Caso seja necessário fazer registro a registro podemos utilizar o cursor. Se assim não atender a sua demanda me retorno que lhe envio um exemplo com cursor para fazer em loop.

    Espero ter ajudado.


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Marcado como Resposta Celso Reis terça-feira, 15 de outubro de 2013 18:14
    terça-feira, 15 de outubro de 2013 14:18

Todas as Respostas

  • Olá Celso,

    Segue um exemplo:

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão 
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008 
    MCSA - SQL Server 2012 
    MCT - SQL Server 
    Blog: http://bobgalvao.wordpress.com


    • Editado Roberto Galvão terça-feira, 15 de outubro de 2013 12:51
    • Sugerido como Resposta FSQ terça-feira, 15 de outubro de 2013 12:56
    terça-feira, 15 de outubro de 2013 12:50
  • Bom dia Roberto, a solução enviada por você esta perfeita, porem está me retornando somente o ultimo registro da tabela e preciso que esta instrução me liste todos que satisfaçam a condição exigida, abaixo estou te mandando o código que criei para você analisar o que mais precisa ser adicionado para que todos registros sejam listados.

    Codigo:

    declare @chave int
    select @chave = cast(substring(integrachave,2, len(integrachave))as int) from cpartida where codlote = 70000 and codcoligada = 1

    select * from fxcx where idxcx = @chave

    terça-feira, 15 de outubro de 2013 13:59
  • Olá Celso,

    Veja se executando a query direto não atende a sua necessidade.

    Exemplo:

    select * 
    from fxcx as f
    where exists (	select 1 
    		from cpartida as c
    		where cast(substring(c.integrachave,2, len(c.integrachave))as int) = f.idxcx 
    				and codlote = 70000 
    				and codcoligada = 1)
    

    Assim você retorna os registros em uma única execução.

    Caso seja necessário fazer registro a registro podemos utilizar o cursor. Se assim não atender a sua demanda me retorno que lhe envio um exemplo com cursor para fazer em loop.

    Espero ter ajudado.


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Marcado como Resposta Celso Reis terça-feira, 15 de outubro de 2013 18:14
    terça-feira, 15 de outubro de 2013 14:18
  • Perfeito Roberto. Testei na minha base de dados e o resultado foi o desejado. Muito obrigado.
    terça-feira, 15 de outubro de 2013 18:15