本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
文本到數字-替換
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');