本文為您介紹Hologres已支援的類型轉換函式及使用案例。
函數名 | 傳回型別 | 描述 | 用例 | 結果 | 備忘 |
TRY_CAST |
| 嘗試將TEXT類型的資料轉換成目標資料類型,當嘗試轉換的資料不符合目標資料類型約束時,不會拋出異常,而是自動將異常資料轉換為NULL值。 |
| value列值“abc”由於無法轉換成INT類型, | 本函數為Hologres的擴充函數,要求Hologres執行個體版本必須為V2.2,若您的執行個體為V2.1或以下版本,可聯絡Hologres支援人員升級執行個體。 |
to_char(timestamp, text) | TEXT | 將時間戳記轉換為字串,支援時間範圍為1925~2282年。 | to_char(current_timestamp, 'HH12:MI:SS') | 06:26:33 | 從1.1.31版本開始,在SQL前執行 說明 使用該GUC參數後,查詢效能約有50%的損失,升級至Hologres V1.1.42及以上版本後,約有20%的損失。 |
to_char(int, text) | TEXT | 將整數轉換為字串。 | to_char(125, '999') | 125 | 無 |
to_char(double precision, text) | TEXT | 將實數或雙精確度數轉換為字串。 | to_char(125.8::real, '999D9') | 125.8 | 無 |
to_date(text, text) | DATE | 將字串轉換為日期,支援時間範圍為1925~2282年。 |
| 2000-12-05 | 從1.1.31版本開始,在SQL前執行 說明 使用該GUC參數後,查詢效能約有50%的損失,升級至Hologres V1.1.42及以上版本後,約有20%的損失。 |
to_number(text, text) | NUMERIC | 將字串轉換為數字。 | to_number('12,454.8-', '99G999D9S') | -12454.8 | 無 |
to_timestamp(text, text) | TIMESTAMP | 將字串轉換為時間戳記,支援時間範圍為1925~2282年。 | to_timestamp('05 Dec 2000', 'DD Mon YYYY') | 2000-12-05 00:00:00 |
說明 使用該GUC參數後,查詢效能約有50%的損失,升級至Hologres V1.1.42及以上版本後,約有20%的損失。 |
array_to_string(anyarray, text [, text]) | TEXT | 將數群組轉換為字串。 | array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') | 1,2,3,*,5 | 無 |
array_agg(expression) | ARRAY | 將值串聯到數組中,可作為字串轉數組、列轉行使用。 |
|
| 無 |
array_agg (expression[ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] | ARRAY | 將值串聯到數組中,可作為字串轉數組、列轉行使用,可以在運算式中支援Filter過濾條件。 | array_agg(name) filter (where id >3) from f_test | {a5,a6,a7,a7,"{namea,nameb,namec}",a9,a4} | 支援Filter運算式需要Hologres執行個體為V1.3及以上版本。 |
string_agg(expression) | TEXT | 使用指定分隔字元將欄位的非空值串聯成字串,可作為列轉行。 | string_agg(colname, '-') | a-b-c | 無 |
string_agg (expression [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] | TEXT | 使用指定分隔字元將欄位的非空值串聯成字串,可作為列轉行使用,同時在運算式中支援Filter過濾條件。 | string_agg(name,',') filter (where id >3) from f_test | a7,a7,a5,a4,{namea,nameb,namec},a9,a6 | 支援Filter運算式需要Hologres執行個體為V1.3及以上版本。 |
regexp_split_to_table(string text, pattern text ) | TEXT | 使用POSIXRegex分割字串,可作為行轉列。 | regexp_split_to_table('hello world', '\s+') | hello world | 無 |
isnumeric(text) | BOOLEAN | 判斷輸入字串是否是有效數字類型。 | isnumeric('95.5') | true | 從V1.1版本開始支援。 |
row_to_json | JSON | 把一行資料轉換為JSON。 | row_to_json(t) from (select col1,col2 ,...from table) as t | "{"f1":"1","f2":"0"}""{"f1":"0","f2":"0"}""{"f1":"fa","f2":"fb"}""{"f1":"fa","f2":"fb"}" | 僅V1.3及以上版本支援該函數。 |
row() | ARRAY或者TEXT | 返回公式所在的行號。 | select a,b from row_table where row(a,b) =row(b,a) ; | | 僅V1.3及以上版本支援該函數。 |