Tipos de caracteres
Tópicos
Os tipos de dados de caracteres incluem CHAR (caractere) e VARCHAR (caractere variável).
Armazenamento e intervalos
Os tipos de dados CHAR e VARCHAR são definidos em termos de bytes, não caracteres. Uma coluna CHAR pode ter somente caracteres de byte único, portanto a coluna CHAR(10) pode conter uma string com um comprimento máximo de 10 bytes. Uma coluna VARCHAR pode conter caracteres de multibyte, até o máximo de quatro bytes por caractere. Por exemplo, uma coluna VARCHAR(12) pode conter 12 caracteres de único byte, 6 caracteres de dois bytes, 4 caracteres de três bytes ou 3 caracteres de quatro bytes.
Name | Armazenamento | Intervalo (largura da coluna) |
---|---|---|
CHAR, CHARACTER ou NCHAR | Comprimento da string, incluindo espaços em branco (se houver) | 4.096 bytes |
VARCHAR, CHARACTER VARYING ou NVARCHAR | 4 bytes + total de bytes dos caracteres, onde cada caractere pode ser de 1 a 4 bytes. | 65.535 bytes (64K -1) |
BPCHAR | Convertido para CHAR(256) de comprimento fixo | 256 bytes |
TEXT | Convertido para VARCHAR(256). | 260 bytes |
nota
A sintaxe de CREATE TABLE é compatível com a palavra chave MAX para os tipos de dados de caracteres. Por exemplo:
create table test(col1 varchar(max));
A definição de MAX define a largura da coluna como 4.096 bytes para CHAR ou 65.535 bytes para VARCHAR.
CHAR ou CHARACTER
Use uma coluna CHAR OU CHARACTER para armazenar strings de comprimento fixo. Essas strings são protegidas com espaços, portanto uma coluna CHAR(10) sempre ocupa 10 bytes de armazenamento.
char(10)
Uma coluna CHAR sem a especificação de comprimento resulta em uma coluna CHAR(1).
VARCHAR ou CHARACTER VARYING
Use uma coluna VARCHAR ou CHARACTER VARYING para armazenar strings de tamanho variável com um limite fixo. Essas strings não são protegidas com espaços, portanto uma coluna VARCHAR(120) consistem em um máximo de 120 caracteres de único byte, 60 caracteres de dois bytes, 40 caracteres de três bytes ou 30 caracteres de quatro bytes.
varchar(120)
Se você usar o tipo de dados VARCHAR sem um especificador de comprimento em uma instrução CREATE TABLE, o comprimento padrão será 256. Se usado em uma expressão, o tamanho da saída será determinado usando a expressão de entrada (até 65535).
Tipos NCHAR e NVARCHAR
Você pode criar colunas com os tipos NCHAR e NVARCHAR (também conhecidos como tipos NATIONAL CHARACTER e NATIONAL CHARACTER VARYING). Esses tipos são convertidos para os tipos CHAR e VARCHAR, respectivamente, e armazenados com o número de bytes especificado.
Uma coluna NCHAR sem a especificação de comprimento é convertida em uma coluna CHAR(1).
Uma coluna NVARCHAR sem uma especificação de comprimento é convertida em uma coluna VARCHAR(256).
Tipos TEXT e BPCHAR
Você pode criar uma tabela Amazon Redshift com uma coluna TEXT, mas ela é convertida em uma coluna VARCHAR(256) que aceita valores de comprimento variável com no máximo 256 caracteres.
Você pode criar uma coluna Amazon Redshift com um tipo BPCHAR (caractere preenchido em branco), que o Amazon Redshift converte em uma coluna CHAR(256) de comprimento fixo.
Significância de espaços em branco
Tanto os tipos de dados CHAR quanto VARCHAR armazenam strings de até n bytes de comprimento. Uma tentativa de armazenar uma string mais longa em um destes tipos de coluna resulta em um erro, a menos que os caracteres adicionais sejam todos espaços (em branco); nesse caso, a string é truncada para o comprimento máximo. Se a string é mais curta do que o comprimento máximo, os valores CHAR são protegidos por espaços, mas valores CHAR armazenam a string sem os espaços.
Espaços em branco em valores CHAR são sempre semanticamente insignificantes. Eles são ignorados quando você compara dois valores CHAR, não são incluídos em cálculos de COMPRIMENTO e são removidos quando você converte um valor CHAR para outro tipo de string.
Os espaços em branco em valores VARCHAR e de CHAR são tratados como semanticamente insignificantes quando os valores são comparados.
Os cálculos de comprimento retornam o comprimento de strings de caracteres VARCHAR com espaços em branco incluídos no comprimento. Os espaços em branco não são contados no comprimento para strings de caracteres de comprimento fixo.