Pular para o conteúdo
  • Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 10 anos, 9 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #106325
    Avatar de ericclauberericclauber
    Participante

      Olá pessoal,

      Estou confuso nos tipos de dados NUMBER.

      Partindo do princípio que 1 caractere = 1 byte. Entao a documentaçao diz que: a precisao(p) é de 1 a 38. Sendo que o valor de NUMBER é de 1 a 22 bytes. Estou confuso com isso?

      – Documentaçao Oracle –
      NUMBER [ (p [, s]) ]

      Number having precision p and scale s. The precision p can
      range from 1 to 38. The scale s can range from -84 to 127. Both
      precision and scale are in decimal digits. A NUMBER value
      requires from 1 to 22 bytes.

      Agradeço ajuda.

      #106326
      Avatar de rmanrman
      Participante

        @ericclauber

        O que você precisa entender do NUMBER é o seguinte. O tamanho do NUMBER é definido por precisão e escala, precisão é a quantidade total de dígitos que o número vai ter, e escala é a quantidade de dígitos depois da vírgula.

        Exemplos:

        NUMBER(6,2) = 1500,55

        6 dígitos no total, 2 dígitos depois da vírgula.

        NUMBER(2) = 10

        2 dígitos no total, nenhum dígito depois da vírgula.

        #106327
        Avatar de ericclauberericclauber
        Participante

          Rman essa parte eu entendi.

          O que to tentando entender é esse byte 1 a 22. Vou fazer a prova de Sql sábado e tem umas cascas de banana… rs.

          Se voce ver esse select: SELECT * FROM user_tab_columns where table_name = ‘teste’; tem uma coluna data_length que independente do tamanho da precisao, esse campo fica 22.

          #106328
          Avatar de Fábio PradoFábio Prado
          Participante

            @ericclauber,

            É mais fácil de entender como funciona o armazenamento interno de um tipo de dado VARCHAR2 pq cada caractere (não especial) corresponde a 1 byte. No caso do NUMBER, a correspondência pode ser de menos bytes para o total de números, pois o Oracle consegue otimizar o armazenamento interno. Execute por exemplo o sql abaixo (necessário ter o schema HR instalado) e veja que o número 100, por exemplo, é armazenado em apenas 2 bytes, enquanto que o 101..199, são armazenados em 3 bytes.

            select dump(employee_id) , employee_id from hr.employees;

            []s

            Fábio Prado
            http://www.fabioprado.net

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