- Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 4 meses atrás por
Jormungandd.
-
AutorPosts
-
30 de outubro de 2007 às 5:03 pm #80678
Jormungandd
ParticipanteOlá pessoal.
Estou com o seguinte problema, tenho esta QUERY:
SELECT CODIGO,
CONTEUDO
FROM TESTE
LEFT JOIN TEXTOS ON CAMPO = 'ERRO' AND CHAVE = CONCAT(LTRIM(RTRIM(TO_CHAR( CODIGO ))),'|')
WHERE CODIGO = '000044'
O resultado é este:
CODIGO = 14
CONTEUDO = ”Porem o estranho é que rodando este mesmo select com a seguinte modificacao:
SELECT CODIGO,
CONTEUDO
FROM TESTE
LEFT JOIN TEXTOS ON CAMPO = ‘ERRO’ AND CHAVE = ’44|’
WHERE CODIGO = ‘000044’o resultado é:
CODIGO = 14
CONTEUDO = ‘Erro na medida do produto’o campo conteudo vem preenchido, da a entender que há um erro no concat.
O que voces acham que pode ser.
Grato a todos.
30 de outubro de 2007 às 5:20 pm #80680Marcio68Almeida
ParticipanteNa verdade não há nada de errado com o concat…
O seu problema é que você quer que o TRIM remova os zeros à esquerda.Faça o seguinte teste…
Select CONCAT (LTRIM (RTRIM (TO_CHAR ( '0004' ))),'|') from dual
Select CONCAT (LTRIM (RTRIM (TO_NUMBER ( '0004' ))),'|') from dual
30 de outubro de 2007 às 5:33 pm #80683Jormungandd
Participanteperdão, postei errado..
o primeiro select é este
SELECT CODIGO, CONTEUDO
FROM TESTE
LEFT JOIN TEXTOS ON CAMPO = ‘ERRO’ AND
CHAVE = CONCAT( TO_CHAR( CODIGO ),’|’)
WHERE CODIGO = ‘000044’e o campo código é um number.
Grato
30 de outubro de 2007 às 5:42 pm #80685Marcio68Almeida
Participante[quote=”Jormungandd”:3mldp3gt]e o campo código é um number.
[/quote]
Se o campo CODIGO é numérico, não dá para comparar com ‘000044’ por que campo numérico não tem zeros à esquerda…30 de outubro de 2007 às 5:46 pm #80686Jormungandd
ParticipanteSe o campo CODIGO é numérico, não dá para comparar com ‘000044’ por que campo numérico não tem zeros à esquerda…
Aqui compara normalmente.
tanto é que se eu fizer
SELECT *
FROM TESTE
WHERE CODIGO = ‘000044’ele traz os dados normalmente, como se estivesse fazendo:
WHERE CODIGO = 44
Ah estou usando o Oracle 10g e o “Oracle SQL Developer”
Grato a todos.
30 de outubro de 2007 às 9:29 pm #80689Jormungandd
ParticipanteDescobri pessoal, o campo era char(100) não sei porque ele considerava o codigo ao invés de “14|” como “14| ” e a comparação falhava.
o estranho é que quando eu comparo como uma literal “14|” ele funciona mais se faço
CONCAT( TO_CHAR( CODIGO ),’|’)
ele da errrado.. 😕
resolvi isto usando TRIM.
TRIM(CHAVE) = TRIM(CONCAT( TO_CHAR( CODIGO ),’|’))
Grato a todos.
como faço para editar o titulo como resolvido ?
-
AutorPosts
- Você deve fazer login para responder a este tópico.