O pano de fundo disso é: O sistema Postgres antigo usava a linguagem PostQUEL e usava um tipo de dados chamado text
(porque alguém achava que esse era um bom nome para um tipo que armazena texto). Em seguida, o Postgres foi convertido para usar o SQL como sua linguagem. Para obter compatibilidade com SQL, em vez de renomear o tipo text
, um novo tipo varchar
foi adicionado. Mas os dois tipos usam as mesmas rotinas C internamente.
Agora, até certo ponto e em alguns lugares, text
é codificado como um tipo padrão, caso nada mais possa ser derivado. Além disso, a maioria das funções está disponível apenas como um argumento text
ou retornando text
. Os dois tipos são binários compatíveis, portanto, converter é uma operação trivial de tempo de análise. Mas usar text
ainda é, no geral, mais natural para o sistema.
Mas, além desses pontos sutis, não há diferença perceptível. Use o que for mais bonito para você. ; -)