支持的函数

本文为您介绍高级搜索中可以使用的函数。

to_char(timestamp/timestamptz, text)

  • 返回类型:TEXT。

  • 描述:将时间戳转换为字符串,默认支持时间范围为1925年~2282年。

  • 格式:

    • 第一个参数表示待转换时间,第二个参数表示转换格式。

    • YYYY对应年,MM对应月,DD对应日,HH对应时,MI对应分,SS对应秒。

    • 可以使用to_char函数进行24小时制和12小时制的转换,HH24对应24小时制,HH12对应12小时制,默认为12小时制。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    将创建时间转换为24小时制。

    SELECT TO_CHAR(NOW(), 'YYYY-MM-DD');

    20221208

to_timestamp(text, text)

  • 返回类型:TIMESTAMPTZ。

  • 描述:将字符串转换为时间戳,默认支持时间范围为1925年~2282年。

  • 格式:第一个参数表示待转换时间,第二个参数表示转换格式。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    TEXT类型的表字段转换为日期。

    SELECT TO_TIMESTAMP(properties ->> 'ExpireTime', 'YYYY-MM-DD') FROM resources WHERE resource_type = 'ACS::RDS::DBInstance';

    2001-09-28

clock_timestamp()

  • 返回类型:TIMESTAMPTZ。

  • 描述:获取当前时间。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    获取当前时间。

    SELECT CLOCK_TIMESTAMP();

    2023-09-02T11:47:19Z

concat(param1 [,param2]...)

  • 返回类型:TEXT。

  • 描述:连接所有参数。忽略NULL参数。

  • 格式:第一个参数表示任何数据类型的值(必选),第二个参数表示需要连接的任何数据类型的值(可选)。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    连接所有参数。忽略NULL参数。

    SELECT CONCAT('abcde', 2, NULL, 22);

    concat

    --------

    abcde222

concat_ws(separator, param1 [,param2]...)

  • 返回类型:TEXT。

  • 描述:使用分隔符连接除第一个参数外的所有参数。忽略NULL参数。

  • 格式:第一个参数表示分隔符,第二个参数表示需要连接的任何数据类型的值(必选),第三个参数表示需要连接的任何数据类型的值(可选)。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    使用分隔符连接除第一个参数外的所有参数。忽略NULL参数。

    SELECT concat_ws(',', 'abcde', 2, NULL, 22);

    concat_ws

    --------

    abcde,2,22

substring()

  • 返回类型:TEXT。

  • 描述:从字符串中找到子字符串。

  • 格式:substring(string[FROM start][FOR length])substring(string FROM pattern)。具体如下:

    • string:必选。 一个字符串。

    • start:可选。 子字符串的起始位置。默认是 1,也就是字符串的开头。

    • length:可选。 子字符串的长度。默认是提取到字符串的结尾。

    • pattern:必选。 正则表达式。 FROM pattern子句中使用的是POSIX正则表达式;SIMILAR pattern子句中使用的是SQL正则表达式。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    从字符串中找出指定的子字符串。

    SELECT SUBSTRING('Thomas' FROM 2 FOR 3);

    substring

    -------

    hom

    从字符串中找出与POSIX正则表达式匹配的子字符串。

    SELECT SUBSTRING('Thomas' FROM '...$');

    substring

    --------

    mas

char_length(string)

  • 返回类型:INT。

  • 描述:获取字符串的字符长度。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    获取字符串的字符长度。

    SELECT CHAR_LENGTH('jose');

    4

length(string)

  • 返回类型:INT。

  • 描述:获取字符串的字节长度,使用UTF-8编码字符集时,一个汉字是3字节,一个数字或字母是一个字节。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    获取字符串的长度。

    SELECT LENGTH('jose');

    4

lower(string)

  • 返回类型:TEXT。

  • 描述:转换字符串为小写格式。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    转换字符串为小写格式。

    SELECT LOWER('TOM');

    tom

upper(string)

  • 返回类型:TEXT。

  • 描述:转换字符串为大写格式。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    转换字符串为大写格式。

    SELECT UPPER('tom');

    TOM

starts_with(string, string)

  • 返回类型:TEXT。

  • 描述:第一个参数表示需要处理的字符串,第二个参数表示字符串前缀,如果字符串string以指定的前缀开头,那么starts_with()函数返回true,否则返回false

  • 使用示例:

    示例场景

    请求示例

    返回示例

    判断alphabet是否以alph开头。

    SELECT starts_with('alphabet', 'alph');

    true

case

  • 描述:在指定的条件表达式为TRUE时执行一组单个或多个语句。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    通过CASE转换ECS实例的状态。

    SELECT
     resource_id,
     CASE
     properties ->> 'Status'
     WHEN 'Pending' THEN '创建中'
     WHEN 'Running' THEN '运行中'
     WHEN 'Starting' THEN '启动中'
     WHEN 'Stopping' THEN '停止中'
     WHEN 'Stopped' THEN '已停止'
     END AS "状态"
    FROM
     resources
    WHERE
     resource_type = 'ACS::ECS::Instance'
    ORDER BY
     resource_id;
    resource_id 状态
    ------------+-----------
    1 i-xxx				运行中

count

  • 返回类型:INT。

  • 描述:返回指定表满足查询条件的结果行数。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    计算阿里云资源数量。

    SELECT count(*) FROM resources;
    1123

max

  • 描述:求数值类型表达式的最大值。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    查询创建时间最大的资源。

    SELECT MAX(create_time) FROM resources;

    2023-09-13T07:32:37Z

min

  • 描述:求数值类型表达式的最小值。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    查询创建时间最小的资源。

    SELECT MIN(create_time) FROM resources;

    2021-08-20T02:20:37Z

jsonb_array_elements(jsonb)

  • 描述:把一个JSONB数组扩展成一个JSONB值的集合。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    列出所有的IP地址。

    SELECT
     DISTINCT JSONB_ARRAY_ELEMENTS(ip_addresses) AS ip_address
    FROM
     resources
    ip_address
    -----------
     "172.X.X.1"
     "172.X.X.2"
     "172.X.X.3"

jsonb_array_elements_text(jsonb)

  • 描述:把一个JSONB数组扩展成一个TEXT值集合。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    列出所有的IP地址。

    SELECT
     DISTINCT JSONB_ARRAY_ELEMENTS_TEXT(ip_addresses) AS ip_address
    FROM
     resources
    ip_address
    -----------
     172.X.X.1
     172.X.X.2
     172.X.X.3

jsonb_object_keys(jsonb)

  • 描述:返回最外层JSONB对象中的键集合。

  • 使用示例:

    示例场景

    请求示例

    返回示例

    列出所有的标签键。

    SELECT
     DISTINCT JSONB_OBJECT_KEYS(tags) AS tag_key
    FROM
     resources
    tag_key
    ------------------
     key_1
     key_2