Opções de LC_COLLATE e LC_CTYPE
Esta seção descreve como especificar LC_COLLATE (ordem de classificação de sequência de caracteres) e LC_CTYPE (classificação de caracteres) usando CREATE DATABASE.
Consulta de conjuntos de caracteres suportados por LC_COLLATE e LC_CTYPE
Execute a seguinte instrução SQL para consultar conjuntos de caracteres (também chamados de codificações) suportados por LC_COLLATE e LC_CTYPE:
SELECT pg_encoding_to_char(collencoding) AS encoding,collname,collcollate AS "LC_COLLATE",collctype AS "LC_CTYPE" FROM pg_collation;
Se encoding estiver vazia, LC_COLLATE suportará todos os conjuntos de caracteres.
Configurar o agrupamento de um banco de dados em um local
As informações de agrupamento incluem LC_COLLATE e LC_CTYPE. Para mais detalhes, consulte a documentação oficial.
- LC_COLLATE
A comparação da mesma cadeia em diferentes agrupamentos pode ter resultados diferentes.
Por exemplo, depois de executar SELECT 'a'>'A';, o resultado será false se esse parâmetro for definido como en_US.utf8 e o resultado será true se esse parâmetro for definido como C. Se você precisar migrar um banco de dados do Oracle para o RDS for PostgreSQL, defina LC_COLLATE como C. Você pode consultar os agrupamentos suportados na tabela pg_collation.
- LC_CTYPE
Ele é usado para classificar se um caractere é um dígito, letra maiúscula, letra minúscula e assim por diante. Você pode consultar as classificações de caracteres suportadas na tabela pg_collation.
Como usar
Execute o seguinte comando para criar um banco de dados com LC_COLLATE e LC_CTYPE definido como zh_CN.utf8:
CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;
Se LC_COLLATE especificado for incompatível com o conjunto de caracteres, informações de erro semelhantes às seguintes serão exibidas:
- Os LC_COLLATE e LC_CTYPE especificados devem ser compatíveis com o conjunto de caracteres de destino. Caso contrário, um erro é relatado.
- As configurações de LC_COLLATE e LC_CTYPE de um banco de dados existente não podem ser alteradas executando a instrução ALTER DATABASE. Você pode alterá-las ao criar um novo banco de dados e, em seguida, importar seus dados para o novo banco de dados.