Lorsqu’une table est créée dans une base de données, l’instruction de création définit l’affinité, ou le type de données, pour chaque colonne de cette table. Bien que les déclarations d’affinité puissent être omises, il est préférable de déclarer explicitement l’affinité des colonnes dans vos instructions SQL
CREATE TABLE
.
En règle générale, tout objet stocké dans une base de données par une instruction
INSERT
est renvoyé sous forme d’occurrence du même type de données lorsque vous exécutez une instruction
SELECT
. Toutefois, le type de données de la valeur récupérée peut différer selon l’affinité de la colonne de la base de données dans laquelle la valeur est stockée. Lorsqu’une valeur est stockée dans une colonne, si son type de données ne correspond pas à l’affinité de la colonne, la base de données tente de convertir cette valeur en fonction de cette affinité. Par exemple, si une colonne de base de données est déclarée avec une affinité
NUMERIC
, la base de données tente de convertir les données insérées en classe de stockage numérique (
INTEGER
ou
REAL
) avant de stocker les données. Si les données ne peuvent pas être converties, la base de données renvoie une erreur. Selon cette règle, si la chaîne « 12345 » est insérée dans une colonne
NUMERIC
, la base de données la convertit automatiquement en la valeur entière 12345 avant de la stocker dans la base de données. Lorsqu’elle est récupérée par une instruction
SELECT
, la valeur est renvoyée sous forme d’occurrence d’un type de données numérique (tel que Number) plutôt que sous la forme d’une occurrence de String.
Le meilleur moyen d’éviter une conversion non désirable du type de données est de respecter deux règles. D’abord, définissez chaque colonne avec l’affinité correspondant au type de données à stocker. Ensuite, insérez uniquement les valeurs dont le type de données correspond à l’affinité définie. Le respect de ces règles présente deux avantages. Les données ne sont pas converties de façon imprévue lors de leur insertion (ce qui peut éventuellement en modifier le sens). De plus, lorsque vous récupérez les données, elles sont renvoyées avec leur type de données d’origine.
Pour plus d’informations sur les types d’affinités de colonne disponibles et l’utilisation des types de données dans une instruction SQL, voir
Prise en charge des types de données
.