本文为您介绍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 | 使用POSIX正则表达式分割字符串,可作为行转列。 | 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及以上版本支持该函数。 |