Comment convertir des chaînes en nombres dans SQL

Lors de la manipulation de données dans SQL, il peut être nécessaire de convertir des chaînes de caractères en nombres. Par exemple, si les données saisies par l’utilisateur ou les données importées sont stockées sous forme de chaînes, elles doivent être converties pour être traitées en tant que nombres. Cet article fournit des explications détaillées avec des exemples spécifiques sur la façon de convertir des chaînes en nombres dans les bases de données MySQL, PostgreSQL, SQL Server et Oracle.

Sommaire

Méthodes de conversion dans MySQL

Dans MySQL, il est courant d’utiliser les fonctions CAST ou CONVERT pour convertir des chaînes en nombres. Voici des exemples spécifiques.

Utilisation de la fonction CAST

La méthode pour convertir des chaînes en nombres en utilisant la fonction CAST est la suivante :

SELECT CAST('1234' AS UNSIGNED);

Cette requête convertit la chaîne ‘1234’ en entier. En changeant UNSIGNED en SIGNED ou DECIMAL, vous pouvez convertir en différents types numériques.

Utilisation de la fonction CONVERT

Vous pouvez également utiliser la fonction CONVERT pour convertir des chaînes en nombres.

SELECT CONVERT('1234', UNSIGNED);

Cette requête convertit également la chaîne ‘1234’ en entier. Vous pouvez changer UNSIGNED en d’autres types numériques selon les besoins.

Exemple pratique

Par exemple, pour traiter les données d’âge stockées sous forme de chaînes dans la table users :

SELECT user_id, CAST(age AS UNSIGNED) AS numeric_age FROM users;

Cette requête récupère le user_id et l’age converti en nombre sous le nom numeric_age de la table users.

Méthodes de conversion dans PostgreSQL

Dans PostgreSQL, il est courant d’utiliser la fonction CAST ou l’opérateur :: pour convertir des chaînes en nombres. Voici des exemples spécifiques.

Utilisation de la fonction CAST

La méthode pour convertir des chaînes en nombres en utilisant la fonction CAST est la suivante :

SELECT CAST('1234' AS INTEGER);

Cette requête convertit la chaîne ‘1234’ en entier. En changeant INTEGER en NUMERIC ou FLOAT, vous pouvez convertir en différents types numériques.

Utilisation de l’opérateur ::

Vous pouvez également utiliser l’opérateur :: pour convertir des chaînes en nombres.

SELECT '1234'::INTEGER;

Cette requête convertit également la chaîne ‘1234’ en entier. Vous pouvez changer INTEGER en d’autres types numériques selon les besoins.

Exemple pratique

Par exemple, pour traiter les données de montant stockées sous forme de chaînes dans la table orders :

SELECT order_id, CAST(amount AS NUMERIC) AS numeric_amount FROM orders;

Cette requête récupère le order_id et le amount converti en nombre sous le nom numeric_amount de la table orders.

Méthodes de conversion dans SQL Server

Dans SQL Server, il est courant d’utiliser les fonctions CAST ou CONVERT pour convertir des chaînes en nombres. Voici des exemples spécifiques.

Utilisation de la fonction CAST

La méthode pour convertir des chaînes en nombres en utilisant la fonction CAST est la suivante :

SELECT CAST('1234' AS INT);

Cette requête convertit la chaîne ‘1234’ en entier. En changeant INT en DECIMAL ou FLOAT, vous pouvez convertir en différents types numériques.

Utilisation de la fonction CONVERT

Vous pouvez également utiliser la fonction CONVERT pour convertir des chaînes en nombres.

SELECT CONVERT(INT, '1234');

Cette requête convertit également la chaîne ‘1234’ en entier. Vous pouvez changer le premier argument en d’autres types numériques selon les besoins.

Exemple pratique

Par exemple, pour traiter les données de vente stockées sous forme de chaînes dans la table sales :

SELECT sale_id, CAST(sale_amount AS DECIMAL(10, 2)) AS numeric_sale_amount FROM sales;

Cette requête récupère le sale_id et le sale_amount converti en nombre sous le nom numeric_sale_amount de la table sales.

Méthodes de conversion dans Oracle

Dans Oracle, il est courant d’utiliser la fonction TO_NUMBER pour convertir des chaînes en nombres. Voici des exemples spécifiques.

Utilisation de la fonction TO_NUMBER

La méthode pour convertir des chaînes en nombres en utilisant la fonction TO_NUMBER est la suivante :

SELECT TO_NUMBER('1234') FROM dual;

Cette requête convertit la chaîne ‘1234’ en nombre. Vous pouvez également spécifier un modèle de format avec la fonction TO_NUMBER.

Utilisation d’un modèle de format

Vous pouvez spécifier un modèle de format avec la fonction TO_NUMBER pour convertir des chaînes en nombres.

SELECT TO_NUMBER('1,234.56', '9,999.99') FROM dual;

Cette requête convertit la chaîne ‘1,234.56’, qui comprend une virgule et un point décimal, en nombre.

Exemple pratique

Par exemple, pour traiter les données de salaire stockées sous forme de chaînes dans la table employees :

SELECT employee_id, TO_NUMBER(salary) AS numeric_salary FROM employees;

Cette requête récupère le employee_id et le salary converti en nombre sous le nom numeric_salary de la table employees.

Gestion des erreurs et considérations

Différentes erreurs peuvent se produire lors de la conversion de chaînes en nombres. Ici, nous expliquons les erreurs courantes et comment les éviter.

Format de chaîne invalide

Si une chaîne invalide est incluse, la conversion échouera. Par exemple, si des caractères alphabétiques ou des caractères spéciaux sont inclus dans le nombre, la conversion échouera. Dans ce cas, il est nécessaire de nettoyer les données avant la conversion.

SELECT CASE
           WHEN ISNUMERIC(column_name) = 1 THEN CAST(column_name AS INT)
           ELSE NULL
       END AS numeric_column
FROM table_name;

Cette requête utilise la fonction ISNUMERIC dans SQL Server pour ne convertir que les chaînes qui peuvent être converties en nombres.

Gestion des valeurs NULL

Si la chaîne est NULL, le résultat de la conversion sera également NULL. Si les valeurs NULL posent problème, des mesures telles que la définition de valeurs par défaut sont nécessaires.

SELECT COALESCE(CAST(column_name AS INT), 0) AS numeric_column
FROM table_name;

Cette requête définit la valeur par défaut à 0 si des valeurs NULL sont incluses.

Erreurs de troncature

Si la chaîne à convertir dépasse la plage du type numérique cible, une erreur de troncature se produira. Il est important de vérifier la longueur ou la valeur de la chaîne au préalable.

SELECT CASE
           WHEN LENGTH(column_name) <= 10 THEN TO_NUMBER(column_name)
           ELSE NULL
       END AS numeric_column
FROM table_name;

Cette requête ne convertit en nombres que les chaînes de 10 caractères ou moins dans Oracle.

Considérations

  • Étant donné que les fonctions et méthodes varient en fonction de la base de données utilisée, il est important de se référer à la documentation spécifique de la base de données.
  • Lors de la conversion de grandes quantités de données, considérez l’impact sur les performances et envisagez un traitement par lots ou l’utilisation d’index.

Résumé

Cet article explique comment convertir des chaînes en nombres dans SQL avec des méthodes spécifiques pour les principales bases de données. Dans MySQL, on utilise CAST et CONVERT ; dans PostgreSQL, CAST et l’opérateur :: ; dans SQL Server, CAST et CONVERT ; et dans Oracle, la fonction TO_NUMBER. Comprendre les méthodes de conversion pour chaque base de données et choisir la méthode appropriée garantit des opérations de données efficaces tout en maintenant l’intégrité des données. Il est important de prendre en compte la gestion des erreurs et les considérations spécifiques à vos données lors de la conversion.

Sommaire