Guest --Caio -- Postado Setembro 19, 2008 Denunciar Share Postado Setembro 19, 2008 Boa tarde Senhores,vou tentar explicar com minhas palavras, mas acredito que o exemplo que segue abaixo seja auto explicativo.Uso a variavel @ESTAB para montar uma select, e ela me retorna (SELECT LEFT('003 - CL 1',3)+','+LEFT('004 - JC 2',3)+','+LEFT('006 - SH 2',3))porém eu só quero o valor que este select me retorno ('003','004','006')como eu faço pra jogar isso dentro de uma variavel?DECLARE @LOJA VARCHAR(100),@ESTAB VARCHAR(100),@SQL VARCHAR(100)SET @LOJA = '003 - CL 1#004 - JC 2#006 - SH 2'SET @ESTAB = ('SELECT LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3)')SET @SQL = SELECT (@ESTAB)SELECT(@SQL)abraços!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Setembro 19, 2008 Denunciar Share Postado Setembro 19, 2008 acho que é isso que voce precisa:DECLARE @STRING varchar(200)SELECT @STRING = LEFT('003 - CL 1',3)+','+LEFT('004 - JC 2',3)+','+LEFT('006 - SH 2',3)select @STRING Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Caio -- Postado Setembro 19, 2008 Denunciar Share Postado Setembro 19, 2008 :mellow: Cara não é isso q quero.....preciso do resultado q essa select me retorna....('SELECT LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3)')abcs.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 20, 2008 Denunciar Share Postado Setembro 20, 2008 (editado) Posso ter compreendido mal ou estar viajando mas você que executar o conteúdo da varia´vel @ESTAB?Sugiro o EXEC() como no exemplo a seguir:DECLARE @LOJA VARCHAR(100),@ESTAB VARCHAR(100),@SQL VARCHAR(100) SET @LOJA = '003 - CL 1#004 - JC 2#006 - SH 2' SET @ESTAB = ('SELECT LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3)') --SET @SQL = SELECT (@ESTAB) --SELECT(@SQL) EXEC(@ESTAB)Se estou falando bobagens desculpa ai. :P Editado Setembro 20, 2008 por jothaz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Caio -- Postado Setembro 20, 2008 Denunciar Share Postado Setembro 20, 2008 Posso ter compreendido mal ou estar viajando mas você que executar o conteúdo da varia´vel @ESTAB?Sugiro o EXEC() como no exemplo a seguir:DECLARE @LOJA VARCHAR(100),@ESTAB VARCHAR(100),@SQL VARCHAR(100) SET @LOJA = '003 - CL 1#004 - JC 2#006 - SH 2' SET @ESTAB = ('SELECT LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3)') --SET @SQL = SELECT (@ESTAB) --SELECT(@SQL) EXEC(@ESTAB)Se estou falando bobagens desculpa ai. :Pentão cara.....é quase isso....mas eu quero jogar o resultado q eu obter com o exec(@estab) em outra variavel.sei q não funciona. mas seria alguma coisa do tipo:SET @SQL = exec(@ESTAB)vlw!"abraçao! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 20, 2008 Denunciar Share Postado Setembro 20, 2008 (editado) Sem querer ser chato, porém já sendo, porque precisa em variavel?Não podeira ser um uma tabela temporária?Qual versão do SQL utilizas? Editado Setembro 20, 2008 por jothaz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CAIO.EXE Postado Setembro 20, 2008 Denunciar Share Postado Setembro 20, 2008 Sem querer ser chato, porém já sendo, porque precisa em variavel?Não podeira ser um uma tabela temporária?Qual versão do SQL utilizas?Cara não pensei nisso....é q na verdade vou usar isso pra outra coisa maior,montei uma sp mas euy estouro o tamanho da variavel (8000 caracteres)e uma das formas q achei pra reduzir o tamanho foi essa,fazer o tratamento antes e jogar na variavel q monto o select só o que me interessa.....bem...não estou em casamas vou testar sua ideia!obrigado!abraçao! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CAIO.EXE Postado Setembro 22, 2008 Denunciar Share Postado Setembro 22, 2008 POOTS CARA....AINDA não FOI ISSO Q RESOLVEU MEU PROBLEMA....CRIEI A TABELA TEMPORARIA, CONSEGUI ARMAZENAR O Q EU QUERO, MAS QUANDO OU FAZER A COMPARAÇÃO ELE não ME RETORNA nada...DECLARE @LOJA VARCHAR(100),@ESTAB VARCHAR(100),@SQL VARCHAR(100)SET @LOJA = '003 - CL 1#004 - JC 2#006 - SH 2'CREATE TABLE #LOJAS (LOJAS VARCHAR(100))SET @ESTAB = ('INSERT INTO #LOJAS VALUES( LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3))' )--SELECT(@estab)EXEC (@ESTAB)SELECT DESCRICAO FROM LOJASWHERE CODIGO IN (SELECT * FROM #LOJAS)ABCS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 22, 2008 Denunciar Share Postado Setembro 22, 2008 Cadê o join das tabelas? No Where no no From?SELECT DESCRICAO FROM LOJAS L1 WHERE CODIGO IN (SELECT * FROM #LOJAS L2 where L1.id = L2.id)Acim é só um exemplo você deve alterar para os seus campos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CAIO.EXE Postado Setembro 22, 2008 Denunciar Share Postado Setembro 22, 2008 não preciso de join ali cara.....eu quero pegar tudo q estiver na tabela #LOJAS,e outra meu problema é: ela vai me retornar as 3 lojas como se fosse apenas um unico caracter '003,004,006'SEGUE O EXEMPLO(SIMPLIFICADO) DO QUE EU QUERO FAZERCREATE TABLE LOJA(COD VARCHAR(3),DESCRICAO VARCHAR(100))INSERT INTO LOJA VALUES ('001', 'LOJA 001')INSERT INTO LOJA VALUES ('002', 'LOJA 002')INSERT INTO LOJA VALUES ('003', 'LOJA 003')INSERT INTO LOJA VALUES ('004', 'LOJA 004')INSERT INTO LOJA VALUES ('005', 'LOJA 005')INSERT INTO LOJA VALUES ('006', 'LOJA 006')DECLARE @LOJA VARCHAR(200),@ESTAB VARCHAR(200)SET @LOJA = ('003 - LOJA 003#004 - LOJA 004#006 - LOJA 006')DROP TABLE #LOJASCREATE TABLE #LOJAS (LOJAS VARCHAR(100))SET @ESTAB = ('INSERT INTO #LOJAS VALUES( LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3))' )--SELECT(@estab)EXEC (@ESTAB)SELECT * FROM LOJA L1WHERE COD IN (SELECT * FROM #LOJAS L2) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 22, 2008 Denunciar Share Postado Setembro 22, 2008 Não entedi o que você quer muito bem mas sou lerdo mesmo.Se é lista o conteúdo da tabela temporária use isto:SELECT * FROM #LOJAS_TEMPquanto ao retorno: 003,004,006 se for o retonro que você quer depois separamos ele. Primeiro faça retorna o que queres deposi separamos.OK?E despulpe-me por não captar bem o que queres fazer! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CAIO.EXE Postado Setembro 22, 2008 Denunciar Share Postado Setembro 22, 2008 desculpa cara!eu q sou muito ruim pra explicar.....o que acontece....eu tenho as lojas na tabela LOJA (003,004,005,006)enfim, esta é a tabela q armazeno as lojas.eu tenho um relatório em que o usuario pode escolher n lojas, essa lojas passo como parametro para uma SP separadas por # (003 - loja 003#004 - loja 004#006 - loja 006)antes para pegar o código da loja eu fazia o tratamento direto na query, mas a query cresceu e se escolho mtas lojas estoura o tamanho da variavel,por isso resolvi jogar o tratamento das lojas em outra variavel e assim eu economizaria caracteresmas como você esta vendo estou apanhando pra fazer isso.... =\SIM 003,004,006é o que quero retornar....agora preciso separa-los...abrçao!e desculpa Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest --Caio --
Boa tarde Senhores,
vou tentar explicar com minhas palavras, mas acredito que o exemplo que segue abaixo seja auto explicativo.
Uso a variavel @ESTAB para montar uma select, e ela me retorna (SELECT LEFT('003 - CL 1',3)+','+LEFT('004 - JC 2',3)+','+LEFT('006 - SH 2',3))
porém eu só quero o valor que este select me retorno ('003','004','006')
como eu faço pra jogar isso dentro de uma variavel?
DECLARE @LOJA VARCHAR(100),@ESTAB VARCHAR(100),@SQL VARCHAR(100)
SET @LOJA = '003 - CL 1#004 - JC 2#006 - SH 2'
SET @ESTAB = ('SELECT LEFT('+ CHAR(39) + REPLACE(@LOJA,'#' , CHAR(39) + ',3)+'+CHAR(39) + ','+CHAR(39) +'+LEFT(' + CHAR(39)) + CHAR(39) +',3)')
SET @SQL = SELECT (@ESTAB)
SELECT(@SQL)
abraços!!
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.