全部產品
Search
文件中心

:類型轉換函式

更新時間:Feb 04, 2026

本文為您介紹Hologres已支援的類型轉換函式及使用案例。

函數名

傳回型別

描述

用例

結果

備忘

TRY_CAST

  • INTEGER,SMALLINT,BIGINT

  • REAL,DOUBLE PRECISION

  • BOOLEAN

  • DECIMAL

  • JSONB

嘗試將TEXT類型的資料轉換成目標資料類型,當嘗試轉換的資料不符合目標資料類型約束時,不會拋出異常,而是自動將異常資料轉換為NULL值。

  1. 建立try_cast_test目標表並寫入測試資料。

    --建立目標表try_cast_test。
    CREATE TABLE IF NOT EXISTS  try_cast_test (
     key int,
     value text
    );
    
    --向目標表中寫入測試資料。
    INSERT INTO try_cast_test VALUES (1, '1'), (2, 'abc');
  2. 使用try_cast函數將TEXT類型的資料轉換為INT類型。

--將value列TEXT類型的資料轉換為INT類型,並放在value_int列展示。
SELECT
 key,
 value,
 try_cast (value AS INT) as value_int
FROM
 try_cast_test;
 key | value | value_int 
-----+-------+-----------
    1|1      |         1
    2|abc    |\N 
(2 rows)

value列值“abc”由於無法轉換成INT類型,try_cast函數將異常資料處理為NULL值

本函數為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前執行set hg_experimental_functions_use_pg_implementation = ‘to_char’; 或者set hg_experimental_functions_use_pg_implementation = 'to_char,to_date,to_timestamp';可支援所有時間。

說明

使用該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年。

  • to_date('05 Dec 2000', 'DD Mon YYYY')

  • to_date('2000 12 05', 'YYYY MM DD')

2000-12-05

從1.1.31版本開始,在SQL前執行set hg_experimental_functions_use_pg_implementation = 'to_date' ;或者set hg_experimental_functions_use_pg_implementation = 'to_char,to_date,to_timestamp'; 可支援所有時間。

說明

使用該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

  • 執行結果不包含+08

  • 從1.1.31版本開始,在SQL前執行set hg_experimental_functions_use_pg_implementation = 'to_timestamp'; 可支援所有時間。

說明

使用該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(123)

  • array_agg(colname)

  • {123}

  • {1,2}

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

a    b
0    0

僅V1.3及以上版本支援該函數。