22 de mar. de 2021

Tipos de Dados - Caracteres

    Seguindo com os tipos de dados vamos entender os tipos de dados de caracteres, que basicamente são CHAR, NCHAR, VARCHAR2 e NVARCHAR2.

VARCHAR2

    Destinado para armazenar cadeia de caracteres de forma variável, dever ser informado o tamanho do campo no momento da criação da coluna, por exemplo, VARCHAR2(n) onde o n indica a quantidade máxima de caracteres que poderá ser armazenada na coluna, esse valor tem um mínimo de 1 byte ou caractere e pode ter no máximo 32767 bytes ou caracteres no caso do parâmetro MAX_STRING_SIZE ter o valor igual a EXTENDED ou no máximo 4000 bytes no caso do parâmetro estar configurado com o valor igual a STANDARD.

Como o tamanho é variável, em uma coluna VARCHAR(10), por exemplo, podemos ter valores como abaixo:

'asd'             -> Tamanho ocupado 3

'asdf12'        -> Tamanho ocupado 6

'asdfg12345-> Tamanho ocupado 10

NVARCHAR2

    Funciona da mesma maneira que o tipo VARCHAR2, contudo o tipo NVARCHAR2 permite definir a forma de codificação da coluna entre AL16UTF16 OU UTF8. Essa configuração também altera os tamanhos máximos suportados nesse tipo de coluna.

    Caso o parâmetro MAX_STRING_SIZE esteja com o valor STANDARD, a coluna irá suportar 2000 bytes para codificação AL16UTF16 e 4000 bytes para UTF8. Se o parâmetro estiver configurado para EXTENDED o tamanho suportado será de 16383 bytes para AL16URF16 e 32767 bytes para UTF8.

CHAR

    Armazena caracteres (alfanuméricos) com tamanho fixo no campo, ou seja, caso a coluna esteva definida com tamanho 10 e for inserido no campo o valor 'asd' os outros 7 espaços serão ocupados com espaços em branco ficando armazenado como 'asd       ' , sendo o mínimo 1 byte e o máximo 2000 bytes, na definição de uma coluna char devemos passar o tamanho do campo de acordo com a sintaxe char(n) onde n indica o tamanho em bytes. No exemplo citado acima em que coluna char(10), teríamos a coluna ocupada da seguinte maneira:

'asd       '      -> Tamanho ocupado 10

'asdfg12   '    -> Tamanho ocupado 10

'asdfg12345'  -> Tamanho ocupado 10

NCHAR

    Assim como o CHAR, armazena caracteres alfanuméricos  com tamanho fixo, contudo, pode variar de acordo com a codificação utilizada, assim como o NVARCHAR2. Quando não é informado na declaração o tamanho do campo ele assume o valor 1 como padrão. Os valores máximos são 1000 para codificação AL16UTF16 e 2000 caracteres para UTF8. Caso um valor CHAR tente ser armazenado em uma coluna NCHAR, o valor poderá ser aceito, pois o banco de dados fará uma conversão para o formato codificado na coluna NCHAR.

Fonte:

https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483

Nenhum comentário:

Postar um comentário