文本到數字-替換 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

文本到數字-替換

TEXT_TO_NUMERIC_ALT 執行數字數據樣式的轉換操作,以將字符串轉換為數字數據格式。

Syntax (語法)

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

引數

運算式

任何評估為一或多個 CHAR 或 VARCHAR 值的表達式,例如欄名或常值。轉換 Null 值會傳回 Null。空字符串或空字符串轉換為 0。

format

字串常值,定義輸出表達式的格式。如需詳細資訊,請參閱 數字數據的數字數據樣式格式字符

precision

數字結果中的位數。默認值為 38。

scale

數值結果中小數點右邊的位數。預設為 0。

傳回類型

TEC_TO_ALT 傳回十進制數字。

如果 Amazon Redshift 換為格式短語不成功。

Amazon Redshift 轉換輸入表達字符串設置為具有最高精度的數字類型,該類型在精確度選項。如果數值的長度超過您為精確度中,Amazon Redshift 會根據下列規則將數值四捨五入:

  • 如果轉換結果的長度超過了您在格式短語,Amazon Redshift 會返回錯誤。

  • 如果將結果轉換為數值,則結果將舍入到最接近的值。如果小數部分正好位於上下轉換結果之間的中間,則結果將四捨五入到最接近的偶數值。

範例

下列範例會將輸入轉換表達字符串 '1.5' 設置為數值 '2'。因為該語句沒有指定規模規模默認為 0,並且轉換結果不包含分數結果。由於 .5 在 1 和 2 之間的中間位置,所以轉換結果四捨五入到偶數值 2。

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

下列範例會將輸入轉換表達字符串 '2.51' 設置為數值 3。因為該語句沒有指定規模值,則規模默認為 0,並且轉換結果不包含分數結果。由於 .51 接近 3 比 2,所以投射結果四捨五入到值 3。

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

下列範例會將輸入轉換表達字符串 123.52501,帶有精確度共 10 和規模設置為 2 的數字值為 123.53。

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

下面的示例指定一個表列作為輸入表達

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

以下是此示例的表定義和插入語句。

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');