本文为您介绍高级搜索中可以使用的函数。
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