Realtime ComputeFlink版在社區Flink SQL資料類型基礎上,新增隱式類型轉換的支援。本文為您介紹類型轉換支援矩陣。
注意事項
Realtime ComputeFlink版預設啟用Legacy-Cast行為(包括顯式類型、隱式類型所轉換產生的cast操作)。
參數說明
table.exec.legacy-cast-behaviour由社區 Flink 1.15 引入,此參數在顯式轉換類型或隱式類型轉換中會使用到,實現從來源資料類型到目標類型的強制轉換,注意轉換可能產生精度截斷、值溢出、空返回等。為了相容前期版本行為,雲上預設值為enabled,Apache Flink該參數預設值為disabled。關於CAST
CAST在轉換異常時預設採用空值處理,不會顯式報錯。在需要嚴格檢查異常值的情境,可以通過設定參數
table.exec.legacy-cast-behaviour=disabled讓任務在遇到異常資料轉換時顯式報錯。關於TRY_CAST
可以在顯式類型轉換時按需使用,遇到轉換異常時會返回null,不會報錯導致作業失敗。等效於使用CAST時將參數
table.exec.legacy-cast-behaviour設定為enabled。
對於空值null的使用,建議使用顯式類型轉換的寫法,即
cast(null as target_type),如cast(null as varchar),避免出現非預期的轉換結果,如“NULL”字串或轉換異常。
類型轉換支援矩陣
輸入類型\目標類型 | null | boolean | tinyint | smallint | int | bigint | decimal | float | double | interval | date | time | timestamp | [var]char | [var]binary | variant | bitmap |
null | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I | I |
boolean | - | I | E | E | E | E | E | E | E | - | - | - | - | I | - | E | - |
tinyint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
smallint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
int | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
bigint | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
decimal | - | E | I | I | I | I | I | I | I | E | - | - | E | I | - | E | - |
float | - | E | I | I | I | I | I | I | I | - | - | - | E | I | - | E | - |
double | - | E | I | I | I | I | I | I | I | - | - | - | E | I | - | E | - |
interval | - | - | E | E | E | E | E | - | - | I | - | - | - | E | - | E | - |
date | - | - | - | - | - | - | - | - | - | - | I | - | I | I | - | E | - |
time | - | - | - | - | - | - | - | - | - | - | - | I | E | I | - | E | - |
timestamp | - | - | E | E | E | E | E | E | E | - | I | E | I | I | - | E | - |
[var]char | - | E | I | I | I | I | I | I | I | I | I | I | I | I | I | E | - |
[var]binary | - | - | - | - | - | - | - | - | - | - | E | E | E | I | I | E | - |
variant | - | E | E | E | E | E | E | E | E | E | E | E | E | E | E | I | - |
bitmap | - | - | - | - | - | - | - | - | - | - | - | - | - | E | E | - | I |
其中符號含義說明如下:
E:只支援顯式類型轉換。
I:支援隱式類型轉換。
-:不支援類型轉換。
相關文檔
社區支援的SQL資料類型詳情請參見社區Flink SQL資料類型。