Pular para o conteúdo
  • Este tópico contém 7 respostas, 6 vozes e foi atualizado pela última vez 16 anos, 4 meses atrás por Rodrigo Mesquita.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #87933
    Miro
    Participante

      Ola estou tentando montar uma mascara em SQL para cep de rua, mas esta dando um erro alguem pode dar uma ideia ??

      select Decode(89235095, NULL,NULL, Translate(To_Char(89235095/100,’00000.000′) ,’.-‘)) FROM DUAL

      #87934
      Manoel872
      Participante

        select REPLACE(To_Char(89235095/1000,’00000.000′),’.’ ,’-‘),89235095/100 FROM DUAL

        Utilize o replace e a divisão e por 1000 pois cep tem 3 digitos a direita.

        #87935
        Avatar photoLeonardo Litz
        Participante

          Ou …

          SELECT SUBSTR(‘89235095′,1,5)||’-‘||SUBSTR(‘89235095’,-3) FROM DUAL

          Vlw Leonardo Litz

          #87936
          Marcio68Almeida
          Participante

            [quote=”Litz”:1d17i901]SELECT SUBSTR(‘89235095′,1,5)||’-‘||SUBSTR(‘89235095’,-3) FROM DUAL[/quote]
            Esta regra não funciona, pois o meu CEP é 01520000, se ele guardar em uma coluna do tipo number (já que ele usa um TO_CHAR) o zero inicial será suprimido.
            A dica do Manuel é mais condizente com a situação.

            #87937
            Avatar photoLeonardo Litz
            Participante

              Considerei que a coluna fosse varchar.

              #87966
              lipcurl
              Participante

                Derrepente é uma boa idéia.

                select regexp_replace(25050290, ‘^(d{5})(d{3})$’,’1-2′) from dual;

                #87970
                Marcio68Almeida
                Participante

                  [quote=”lipcurl”:2w9h3k7u]Derrepente é uma boa idéia.

                  select regexp_replace(25050290, ‘^(d{5})(d{3})$’,’1-2′) from dual;[/quote]

                  É uma opção interessante, porém é para a versão 10g em diante, não tem na 9i.
                  E tem o mesmo problema de quando o primeiro dígito é zero.

                  #87977
                  Rodrigo Mesquita
                  Participante

                    vc pode fazer tambem assim

                    Select substr(lpad(01520000,8,’0′),1,5)||’-‘||substr(lpad(01520000,8,’0’),5,3) From dual

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