本文為您介紹高級搜索中可以使用的函數。
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