Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Fonction CAST

Mode de mise au point
Fonction CAST - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

La fonction CAST convertit un type de données en un autre type de données compatible. Par exemple, vous pouvez convertir une chaîne en date ou un type numérique en chaîne. CAST effectue une conversion d’exécution, ce qui signifie que la conversion ne modifie pas le type de données d’une valeur dans une table source. Elle n’est modifiée que dans le contexte de la requête.

La fonction CAST est très similaire à la fonction Fonction CONVERT, en ce sens qu’elles convertissent toutes deux un type de données en un autre, mais elles sont appelées différemment.

Certains types de données nécessitent une conversion explicite en d’autres types de données à l’aide de la fonction CAST ou CONVERT. D’autres types de données peuvent être convertis implicitement, dans le cadre d’une autre commande, sans utiliser CAST ou CONVERT. Voir Compatibilité et conversion de types.

Syntaxe

Utilisez l’une de ces deux formes de syntaxes équivalentes pour convertir les expressions cast d’un type de données à un autre.

CAST ( expression AS type ) expression :: type

Arguments

expression

Expression qui correspond à une ou plusieurs valeurs, par exemple un nom de colonne ou un littéral. La conversion de valeurs null renvoie des valeurs null. L’expression ne peut pas contenir des chaînes vides.

type

L’un des Types de données pris en charge.

Type de retour

CAST renvoie le type de données spécifié par l’argument type.

Note

Amazon Redshift renvoie une erreur si vous essayez d’effectuer une conversion problématique, telle que la conversion DECIMAL suivante qui perd en précision :

select 123.456::decimal(2,1);

ou une conversion INTEGER qui entraîne un dépassement de capacité :

select 12345678::smallint;

Exemples

Certains exemples utilisent l’exemple de base de données TICKIT. Pour plus d'informations sur la configuration d'échantillons de données, voir Charger des données.

Les deux requêtes suivantes sont équivalentes. Toutes deux convertissent une valeur décimale en un nombre entier :

select cast(pricepaid as integer) from sales where salesid=100; pricepaid ----------- 162 (1 row)
select pricepaid::integer from sales where salesid=100; pricepaid ----------- 162 (1 row)

Ce qui suit produit un résultat similaire. Il ne nécessite pas d’exemples de données pour s’exécuter :

select cast(162.00 as integer) as pricepaid; pricepaid ----------- 162 (1 row)

Dans cet exemple, les valeurs d’une colonne d’horodatage sont converties en dates, ce qui entraîne la suppression de l’horodatage de chaque résultat :

select cast(saletime as date), salesid from sales order by salesid limit 10; saletime | salesid -----------+--------- 2008-02-18 | 1 2008-06-06 | 2 2008-06-06 | 3 2008-06-09 | 4 2008-08-31 | 5 2008-07-16 | 6 2008-06-26 | 7 2008-07-10 | 8 2008-07-22 | 9 2008-08-06 | 10 (10 rows)

Si vous n’avez pas utilisé CAST comme illustré dans l’exemple précédent, les résultats incluraient l’heure : 2008-02-18 02:36:48.

La requête suivante convertit des données de caractères variables en date. Elle ne nécessite pas d’exemples de données pour s’exécuter.

select cast('2008-02-18 02:36:48' as date) as mysaletime; mysaletime -------------------- 2008-02-18 (1 row)

Dans cet exemple, les valeurs d’une colonne de dates sont converties en horodatages :

select cast(caldate as timestamp), dateid from date order by dateid limit 10; caldate | dateid --------------------+-------- 2008-01-01 00:00:00 | 1827 2008-01-02 00:00:00 | 1828 2008-01-03 00:00:00 | 1829 2008-01-04 00:00:00 | 1830 2008-01-05 00:00:00 | 1831 2008-01-06 00:00:00 | 1832 2008-01-07 00:00:00 | 1833 2008-01-08 00:00:00 | 1834 2008-01-09 00:00:00 | 1835 2008-01-10 00:00:00 | 1836 (10 rows)

Dans un cas comme dans l’exemple précédent, vous pouvez obtenir un contrôle supplémentaire sur le formatage de sortie en utilisant TO_CHAR.

Dans cet exemple, un nombre entier est converti en chaîne de caractères :

select cast(2008 as char(4)); bpchar -------- 2008

Dans cet exemple, une valeur DECIMAL(6,3) est convertie en valeur DECIMAL(4,1) :

select cast(109.652 as decimal(4,1)); numeric --------- 109.7

Cet exemple montre une expression plus complexe. La colonne PRICEPAID (colonne DECIMAL(8,2)) de la table SALES est convertie en une colonne DECIMAL(38,2) et les valeurs sont multipliées par 100000000000000000000 :

select salesid, pricepaid::decimal(38,2)*100000000000000000000 as value from sales where salesid<10 order by salesid; salesid | value ---------+---------------------------- 1 | 72800000000000000000000.00 2 | 7600000000000000000000.00 3 | 35000000000000000000000.00 4 | 17500000000000000000000.00 5 | 15400000000000000000000.00 6 | 39400000000000000000000.00 7 | 78800000000000000000000.00 8 | 19700000000000000000000.00 9 | 59100000000000000000000.00 (9 rows)
Note

Vous ne pouvez pas effectuer d’opération CAST ou CONVERT sur le type de données GEOMETRY pour le remplacer par un autre type de données. Toutefois, vous pouvez fournir une représentation hexadécimale du littéral d’une chaîne au format EWKB (extended well-known binary) en tant qu’entrée des fonctions qui acceptent un argument GEOMETRY. Par exemple, la fonction ST_AsText suivante attend un type de données GEOMETRY.

SELECT ST_AsText('01010000000000000000001C400000000000002040');
st_astext ------------ POINT(7 8)

Vous pouvez également spécifier de façon explicite le type de données GEOMETRY.

SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
st_astext ------------ POINT(5 6)

Rubrique suivante :

CONVERT

Sur cette page

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.