

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# CAST-Funktion
<a name="CAST_function"></a>

Die CAST-Funktion konvertiert einen Datentyp in einen anderen kompatiblen Datentyp. Sie können beispielsweise eine Zeichenfolge in ein Datum oder einen numerischen Typ in eine Zeichenfolge konvertieren. CAST führt eine Laufzeitkonvertierung durch, was bedeutet, dass die Konvertierung den Datentyp eines Werts in einer Quelltabelle nicht ändert. Dieser wird nur im Kontext der Abfrage geändert.

Bestimmte Datentypen erfordern eine explizite Konvertierung in andere Datentypen mithilfe der CAST-Funktion. Andere Datentypen können implizit als Teil eines anderen Befehls konvertiert werden, ohne CAST zu verwenden. Siehe [Kompatibilität von Typen und Umwandlung zwischen Typen](s_Type_conversion.md). 

## Syntax
<a name="CAST_function-syntax"></a>

Verwenden Sie eine dieser beiden gleichwertigen Syntaxformate, um Ausdrücke von einem Datentyp in einen anderen umzuwandeln.

```
CAST ( expression AS type )
```

## Argumente
<a name="CAST_function-arguments"></a>

 *expression*   
Ein Ausdruck, der einen oder mehrere Werte auswertet, beispielsweise ein Spaltenname oder ein Literal. Die Konvertierung von Null-Werten gibt Null-Werte zurück. Der Ausdruck darf keine leeren oder leeren Zeichenfolgen enthalten. 

 *Typ*   
Einer der unterstützten Datentypen[Datentypen](s_Supported_data_types.md), mit Ausnahme der Datentypen BINARY und BINARY VARYING. 

## Rückgabetyp
<a name="CAST_function-return-type"></a>

CAST gibt den Datentyp zurück, der durch das Argument *type* angegeben ist. 

**Anmerkung**  
AWS Clean Rooms gibt einen Fehler zurück, wenn Sie versuchen, eine problematische Konvertierung durchzuführen, z. B. eine DECIMAL-Konvertierung, die an Genauigkeit verliert, wie die folgende:   

```
select 123.456::decimal(2,1);
```
oder eine INTEGER-Konvertierung, die einen Overflow verursacht:   

```
select 12345678::smallint;
```

## Beispiele
<a name="CAST_function-examples"></a>

Die folgenden beiden Abfragen sind gleichwertig. Beide wandeln einen Dezimalwert in eine Ganzzahl um: 

```
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)
```

Das Folgende führt zu einem ähnlichen Ergebnis. Für die Ausführung sind keine Beispieldaten erforderlich: 

```
select cast(162.00 as integer) as pricepaid;

pricepaid
-----------
162
(1 row)
```

In diesem Beispiel werden die Werte in einer Zeitstempelspalte in Datumsangaben umgewandelt, was dazu führt, dass die Uhrzeit aus jedem Ergebnis entfernt wird:

```
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)
```

Wenn Sie CAST nicht wie im vorherigen Beispiel dargestellt verwendet haben, würden die Ergebnisse die Uhrzeit umfassen: *2008-02-18 02:36:48*.

Die folgende Abfrage wandelt variable Zeichendaten in ein Datum um. Für die Ausführung sind keine Beispieldaten erforderlich. 

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

mysaletime    
--------------------
2008-02-18  
(1 row)
```

In diesem Beispiel werden die Werte in einer Datumsspalte in Zeitstempel umgewandelt: 

```
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)
```

In einem Fall wie dem vorherigen Beispiel können Sie zusätzliche Kontrolle über die Ausgabeformatierung erlangen, indem Sie[TO\$1CHAR](TO_CHAR.md).

In diesem Beispiel wird eine Ganzzahl in eine Zeichenfolge umgewandelt: 

```
select cast(2008 as char(4));

bpchar
--------
2008
```

In diesem Beispiel wird ein DECIMAL(6,3)-Wert in einen DECIMAL(4,1)-Wert umgewandelt: 

```
select cast(109.652 as decimal(4,1));

numeric
---------
109.7
```

Dieses Beispiel zeigt einen komplexeren Ausdruck. Die Spalte PRICEPAID (eine DECIMAL(8,2)-Spalte) in der Tabelle SALES wird in eine DECIMAL(38,2)-Spalte umgewandelt und die Werte werden mit 100000000000000000000 multipliziert: 

```
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)
```