TEXT_TO_NUMERIC_ALT - Amazon Redshift

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.

TEXT_TO_NUMERIC_ALT

TEXT_TO_NUMERIC_ALT führt einen Umwandlungsvorgang im Teradata-Stil aus, um eine Zeichenfolge in ein numerisches Datenformat zu konvertieren.

Syntax

TEXT_TO_NUMERIC_ALT (expression [, 'format'] [, precision, scale])

Argumente

expression

Ein Ausdruck, der einen oder mehrere CHAR- oder VARCHAR-Werte auswertet, beispielsweise ein Spaltenname oder ein Literal. Die Konvertierung von Null-Werten gibt Null-Werte zurück. Leere Zeichenfolgen werden in 0 umgewandelt.

format

Ein Zeichenfolgeliteral, das das Format des Eingabeausdrucks definiert. Weitere Informationen finden Sie unter Formatierungszeichen im Teradata-Stil für numerische Daten.

precision

Die Anzahl der Ziffern im numerischen Ergebnis. Der Standardwert ist 38.

scale

Die Anzahl der Ziffern rechts vom Dezimaltrennzeichen im numerischen Ergebnis. Der Standardwert ist 0.

Rückgabetyp

TEXT_TO_NUMERIC_ALT gibt eine DECIMAL-Zahl zurück.

Amazon Redshift gibt einen Fehler zurück, wenn die Umwandlung der von Ihnen angegebenen format-Phrase fehlschlägt.

Amazon Redshift wandelt die expression-Eingabezeichenfolge in den numerischen Typ mit der höchsten Genauigkeit um, die Sie für diesen Typ in der precision-Option angeben. Wenn die Länge des numerischen Wertes den Wert übersteigt, den Sie unter precision angegeben haben, rundet Amazon Redshift den numerischen Wert gemäß folgender Regeln:

  • Wenn die Länge des Umwandlungsergebnisses die Länge übersteigt, die Sie in der format-Phrase angegeben haben, gibt Amazon Redshift einen Fehler zurück.

  • Wenn das Ergebnis in einen numerischen Wert umgewandelt wird, wird das Ergebnis auf den nächsten Wert gerundet. Wenn die Nachkommastelle genau zwischen dem höheren und niedrigeren Umwandlungsergebnis liegt, wird das Ergebnis auf den nächsten geraden Wert gerundet.

Beispiele

Im folgenden Beispiel wird die expression-Eingabezeichenfolge '1.5' in den numerischen Wert '2' umgewandelt. Da die Anweisung keinen scale angibt, wird der scale standardmäßig auf 0 festgelegt und das Umwandlungsergebnis enthält keine Nachkommastellen. Da .5 zwischen 1 und 2 liegt, wird das Umwandlungsergebnis auf den geraden Wert 2 gerundet.

select text_to_numeric_alt('1.5');
text_to_numeric_alt --------------------- 2

Im folgenden Beispiel wird die expression-Eingabezeichenfolge '2.51' in den numerischen Wert 3 umgewandelt. Da die Anweisung keinen scale-Wert angibt, wird der scale standardmäßig auf 0 festgelegt und das Umwandlungsergebnis enthält keine Nachkommastellen. Da .51 näher an 3 als 2 liegt, wird das Ergebnis auf den Wert 3 gerundet.

select text_to_numeric_alt('2.51');
text_to_numeric_alt --------------------- 3

Im folgenden Beispiel wird die expression-Eingabezeichenfolge 123.52501 mit einer precision von 10 und einem scale von 2 in den numerischen Wert 123.53 umgewandelt.

select text_to_numeric_alt('123.52501', 10, 2);
text_to_numeric_alt --------------------- 123.53

Im folgenden Beispiel wird die Zeichenfolge '123 {'für den Eingabeausdruck mit der Formatphrase' 999S 'in die Zahl 1230 konvertiert. Das S-Zeichen gibt ein Signed Zoned Decimal an. Weitere Informationen finden Sie unter Formatierungszeichen im Teradata-Stil für numerische Daten.

select text_to_numeric_alt('123{', '999S');
text_to_int_alt ---------- 1230

Im folgenden Beispiel wird die Eingabeausdruckszeichenfolge 'USD123' mit der Formatphrase 'C9 (I) 'in die Zahl 124 konvertiert. Siehe Formatierungszeichen im Teradata-Stil für numerische Daten.

select text_to_numeric_alt('USD123.9', 'C9(I)');
text_to_numeric_alt ---------- 124

Das folgende Beispiel gibt eine Tabellenspalte als Eingabe-expression an.

select text_to_numeric_alt(a), text_to_numeric_alt(b) from t_text2numeric order by 1;
text_to_numeric_alt | text_to_numeric_alt -----------------------------------------+----------------------------------------- -99999999999999999999999999999999999999 | -99999999999999999999999999999999999999 -12300 | -12300 123 | 123 123 | 123 99999999999999999999999999999999999999 | 99999999999999999999999999999999999999

Im Folgenden sehen Sie die Tabellendefinition und die insert-Anweisung für dieses Beispiel.

create table t_text2numeric (a varchar(200), b char(200));
insert into t_text2numeric values ('123', '123'), ('+123.456', '+123.456'), ('-' || repeat('9', 38), '-' || repeat('9', 38)), (repeat('9', 38) || '+', repeat('9', 38) || '+'), ('-123E2', '-123E2');