Pular para o conteúdo
  • Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 17 anos, 3 meses atrás por Jormungandd.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #80678
    Jormungandd
    Participante

      Olá 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.

      #80680
      Marcio68Almeida
      Participante

        Na 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

        #80683
        Jormungandd
        Participante

          perdã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

          #80685
          Marcio68Almeida
          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…

            #80686
            Jormungandd
            Participante

              Se 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.

              #80689
              Jormungandd
              Participante

                Descobri 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 ?

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress