Quando uma tabela é criada em um banco de dados, a instrução SQL usada para criar a tabela define a afinidade, ou o tipo de dados, de cada coluna da tabela. Embora seja possível omitir declarações de afinidade, é uma boa ideia declarar explicitamente a afinidade de coluna nas instruções SQL
CREATE TABLE
.
Como regra geral, qualquer objeto que você armazena em um banco de dados usando uma instrução
INSERT
é retornado como ocorrência do mesmo tipo de dados quando é executada uma instrução
SELECT
. No entanto, o tipo de dados do valor recuperado pode ser diferente, dependendo da afinidade da coluna do banco de dados na qual o valor está armazenado. Quando um valor é armazenado em uma coluna, se o respectivo tipo de dados não corresponde à afinidade de coluna, o banco de dados tenta converter o valor para que corresponda à afinidade de coluna. Por exemplo, se uma coluna de banco de dados está declarada com afinidade
NUMERIC
, o banco de dados tenta converter os dados inseridos em uma classe de armazenamento numérica (
INTEGER
ou
REAL
) antes de armazenar os dados. O banco de dados gera um erro se não é possível converter os dados. De acordo com esta regra, se a String “12345” é inserida em uma coluna
NUMERIC
, o banco de dados automaticamente a converte no valor inteiro 12345 antes de armazená-la no banco de dados. Quando recuperado com uma instrução
SELECT
, o valor é retornado como uma ocorrência de um tipo de dados numérico (por exemplo, Number) e não como uma ocorrência de String.
A melhor maneira de evitar a conversão indesejada de tipos de dados é seguir duas regras. Primeiro, defina cada coluna com a afinidade que corresponda ao tipo de dados que pretende armazenar. Em seguida, insira apenas valores cujo tipo de dados corresponda à afinidade definida. Se você seguir essas regras, terá dois benefícios. Quando você inserir os dados, eles não serão convertidos inesperadamente (com a possibilidade de perderem o significado pretendido). Além disso, quando você recupera os dados, eles são retornados com o tipo de dados original.
Para obter mais informações sobre os tipos de afinidade de coluna disponíveis e utilização de tipos de dados em instruções SQL, consulte o
Suporte ao tipo de dados
.