Cuando se crea una tabla en una base de datos, la declaración SQL utilizada para crear la tabla define la afinidad o tipo de datos para cada columna en la tabla. Aunque se pueden omitir las declaraciones de afinidad, se recomienda declarar explícitamente la afinidad de columna en las declaraciones SQL
CREATE TABLE
.
Como regla general, cualquier objeto que se almacena en una base de datos usando una declaración
INSERT
se devuelve como una instancia del mismo tipo de datos cuando se ejecuta una declaración
SELECT
. Sin embargo, el tipo de datos del valor recuperado puede ser diferente según la afinidad de la columna de la base de datos donde se almacena el valor. Cuando se almacena un valor en una columna, si el tipo de datos no coincide con la afinidad de la columna, la base de datos intenta convertir el valor para que coincida con la afinidad de la columna. Por ejemplo, si una columna de la base de datos se declara con la afinidad
NUMERIC
, la base de datos intenta convertir los datos insertados en una clase de almacenamiento numérico (
INTEGER
o
REAL
) antes de guardar los datos. La base de datos emite un error si no se pueden convertir los datos. Según esta regla, si se inserta la cadena “12345” en una columna
NUMERIC
, la base de datos automáticamente convierte al valor entero 12345 antes de guardarla en la base de datos. Cuando se recupera con una declaración
SELECT
, se devuelve el valor como una instancia de un tipo de datos numérico (como Number) en lugar de una instancia String.
La mejor manera de evitar la conversión no deseada de tipos de datos es seguir estas dos reglas. Primero, defina cada columna con la afinidad que coincide el tipo de datos que se desea almacenar. A continuación, solo inserte los valores cuyos tipos de datos coinciden con la afinidad definida. El seguimiento de estas reglas tiene dos ventajas. Cuando inserta los datos no se convierten inesperadamente (posiblemente pierde su significado original como resultado) Además, cuando recupera los datos se devuelven en el tipo de datos original.
Para obtener más información sobre los tipos disponibles de afinidad de columnas y sober cómo utilizar los tipos de datos en declaraciones SQL, consulte
Compatibilidad de tipos de datos
.