類型 | 常量樣本 | 描述 |
TINYINT | 1Y、-127Y | 8位有符號整型。 取值範圍:-128~127。 |
SMALLINT | 32767S、-100S | 16位有符號整型。 取值範圍:-32768~32767。 |
INT | 1000、-15645787 | 32位有符號整型。 取值範圍:-2 31~2 31-1。 |
BIGINT | 100000000000L、-1L | 64位有符號整型。 取值範圍:-2 63+1~2 63 -1。 |
BINARY | | 位元據類型,目前長度限制為8 MB。 說明 X'num [...]' 格式中num 是16進位的數字,可以是0~9 或者是A~F 。例如X'616263' ,實際代表的是abc ,因為字元a 的ASCII編碼是0x61 ,字元b 的ASCII編碼是0x62 ,字元c 的ASCII編碼是0x63 。X'616263' 在語義上等效於unhex('616263') 。
假如字串長度不是偶數,系統會在前面補0 ,例如X'616' 等效於X'0616' 。 必須要使用半形單引號,不能使用雙引號,例如X"616263" 不會被解釋成BINARY類型常量。
|
FLOAT | 3.14F、cast(3.14159261E+7 as float) | 32位二進位浮點型。 說明 由於電腦儲存以及內部計算邏輯,用FLOAT類型進行計算時會有精度損失,如果對精度要求比較高,需要將FLOAT資料類型轉換成DECIMAL類型進行計算。 |
DOUBLE | 3.14D、3.14159261E+7 | 64位二進位浮點型。 說明 由於電腦儲存以及內部計算邏輯,用DOUBLE類型進行計算時會有精度損失,如果對精度要求比較高,需要將DOUBLE資料類型轉換成DECIMAL類型進行計算。 |
DECIMAL(precision,scale) | 3.5BD、99999999999.9999999BD | 10進位精確數字類型。 預設為decimal(38,18) ,使用者可以設定其precision和scale值。 precision:表示最多可以表示多少位的數字。取值範圍:1 <= precision <= 38 。 scale:表示小數部分的位元。預設取值範圍: 0 <= scale <= 18 。 若需要使用更大scale精度,支援使用flag參數set odps.sql.decimal2.extended.scale.enable=true; ,設定後scale取值範圍為0 <= scale <= 38 。
說明 同一個表中不能同時存在新老Decimal資料類型。 執行setproject odps.sql.hive.compatible=true; 命令開啟Hive相容模式時,Decimal(precision, scale) 類型在資料匯入(Tunnel Upload)和SQL運算過程中,如果資料的小數位元超過scale的大小,則會進行四捨五入的處理。如果整數部分超出限制,則會報錯。 當參數odps.sql.decimal.tostring.trimzero 值為true 時去掉小數點後末尾的零,為false 時保留小數點後末尾的零,預設值為true 。只對錶裡取數生效,對靜態值不生效。
|
VARCHAR(n) | 無 | 變長字元類型,n為長度。 取值範圍:1~65535。 |
CHAR(n) | 無 | 固定長度字元類型,n為長度,最大取值為255。長度不足則會填充空格,但空格不參與比較。 |
STRING | "abc"、'bcd'、"alibaba"、'inc' | 字串類型,目前長度限制為8 MB。 |
DATE | DATE'2017-11-11' | 日期類型,格式為yyyy-mm-dd 。 取值範圍:0001-01-01~9999-12-31。 |
DATETIME | DATETIME'2017-11-11 00:00:00' | 日期時間類型。 取值範圍:0001-01-01 00:00:00.000~9999-12-31 23:59:59.999,精確到毫秒。 |
TIMESTAMP | TIMESTAMP'2017-11-11 00:00:00.123456789' | 時間戳記類型。 取值範圍:0001-01-01 00:00:00.000000000~9999-12-31 23:59:59.999999999,精確到納秒。 說明 TIMESTAMP類型本身與時區不轉換,在任何時區,TIMESTAMP類型儲存的都是從Epoch(UTC 1970-01-01 00:00:00)開始的一個位移量。您可以通過內建函數對TIMESTAMP類型資料執行與時區相關的計算,如cast(<a timestamp> as string) 將TIMESTAMP類型資料按照當前時區值轉換成STRING類型。 |
TIMESTAMP_NTZ | TIMESTAMP_NTZ '2017-11-11 00:00:00.123456789' | 無時區時間戳記類型。 取值範圍:0000-01-01 00:00:00.000000000~9999-12-31 23:59:59.999999999。關於TIMESTAMP_NTZ資料類型介紹,詳情請參見MaxCompute TIMESTAMP_NTZ資料類型。 |
BOOLEAN | True、False | BOOLEAN類型。 取值範圍:True、False。 |
INTERVAL | | 代表時間段的資料類型,用來表示兩個日期或時間之間的時間間隔。包含INTERVAL_YEAR_MONTH和INTERVAL_DAY_TIME兩種類型。詳情請參見INTERVAL資料類型。 |