华为云用户手册

  • cosh(x) 描述:双曲余弦。 返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。 示例: 1 2 3 4 5 gaussdb=# SELECT cosh(4); cosh ------------------- 27.3082328360165 (1 row) 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
  • || 描述:数组与数组进行连接。 示例: 1 2 3 4 5 gaussdb=# SELECT ARRAY[1,2,3] || ARRAY[4,5,6] AS RESULT; result --------------- {1,2,3,4,5,6} (1 row) 1 2 3 4 5 gaussdb=# SELECT ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] AS RESULT; result --------------------------- {{1,2,3},{4,5,6},{7,8,9}} (1 row)
  • EXTRACT(field FROM source) 描述:extract函数从日期或时间的数值里抽取子域,比如年、小时等。 参数: source是一个timestamp、time或interval类型的值表达式(类型为date的表达式转换为timestamp,因此也可以用)。 field是一个标识符或者字符串,它指定从源数据中抽取的域。 返回值类型:double precision field的取值范围如下所示。
  • pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 示例: 1 2 3 4 5 gaussdb=# SELECT pg_database_size('testdb'); pg_database_size ------------------ 51590112 (1 row) pg_database_size(oid/name)函数的查询耗时与该oid/name所对应数据库中的对象文件数目相关,基本呈线性关系。如需进行耗时评估,可参考以下步骤: 由于耗时与软硬件环境有关,因此需要以某个库(所选择库的对象文件数目不宜过多)的测试结果为基准。根据查询耗时和库中对象文件数目,计算出单个对象文件的耗时database_size_t。 使用select oid,* from pg_database where datname = 'database';查询获取需要查询库的OID,在表空间base和pg_tblspc目录下统计该OID目录下的所有文件数目database_obj_num。如果该目录中包含子目录,则需要进入查看对象文件数目,依次类推;使用ls | wc -l查询目录下文件数目。 根据基准测试结果中的单文件耗时database_size_t和数据库下所有对象文件数目database_obj_num计算预估总耗时,总耗时 = database_size_t * database_obj_num。如果预估时延过长,需考虑调整执行超时阈值,避免出现不必要的告警。 以上步骤评估的是DN上获取数据库大小的耗时,在分布式环境中,总耗时取决于DN中对象文件数目最多或耗时最大的节点。
  • get_db_source_datasize() 描述:估算当前数据库非压缩态的数据总容量。 返回值类型:bigint 备注:调用该函数前需要做analyze。 示例: 1 2 3 4 5 6 7 gaussdb=# analyze; ANALYZE gaussdb=# SELECT get_db_source_datasize(); get_db_source_datasize ------------------------ 35384925667 (1 row)
  • datalength(any) 描述:计算一个指定的数据需要的字节数(不考虑数据的管理空间和数据压缩,数据类型转换等情况)。 返回值类型:int 备注:datalength用于计算某个独立数据值的空间。 示例: gaussdb=# SELECT datalength(1); datalength ------------ 4 (1 row) 目前支持的数据类型及计算方式见下表: 数据类型 存储空间 数值类型 整数类型 TINYINT 1 SMALLINT 2 INTEGER 4 BINARY_INTEGER 4 BIGINT 8 任意精度型 DECIMAL 每4位十进制数占两个字节,小数点前后数字分别计算。 NUMERIC 每4位十进制数占两个字节,小数点前后数字分别计算。 NUMBER 每4位十进制数占两个字节,小数点前后数字分别计算。 序列整型 SMALLSERIAL 2 SERIAL 4 BIGSERIAL 8 浮点类型 FLOAT4 4 DOUBLE PRECISION 8 FLOAT8 8 BINARY_DOUBLE 8 FLOAT[(p)] 每4位十进制数占两个字节,小数点前后数字分别计算。 DEC[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算。 INTEGER[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算。 布尔类型 布尔类型 BOOLEAN 1 字符类型 字符类型 CHAR n CHAR(n) n CHARACTER(n) n NCHAR(n) n VARCHAR(n) n CHARACTER 字符实际字节数。 VARYING(n) 字符实际字节数。 VARCHAR2(n) 字符实际字节数。 NVARCHAR2(n) 字符实际字节数。 TEXT 字符实际字节数。 CLOB 字符实际字节数。 时间类型 时间类型 DATE 8 TIME 8 TIMEZ 12 TIMESTAMP 8 TIMESTAMPZ 8 SMALLDATETIME 8 INTERVAL DAY TO SECOND 16 INTERVAL 16 RELTIME 4 ABSTIME 4 TINTERVAL 12
  • && 描述:将两个tsquery类型的词汇进行“与”操作。 示例: 1 2 3 4 5 gaussdb=# SELECT 'fat | rat'::tsquery && 'cat'::tsquery AS RESULT; result --------------------------- ( 'fat' | 'rat' ) & 'cat' (1 row)
  • || 描述:连接两个tsvector类型的词汇。 示例: 1 2 3 4 5 gaussdb=# SELECT 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector AS RESULT; result --------------------------- 'a':1 'b':2,5 'c':3 'd':4 (1 row)
  • ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 gaussdb=# SELECT ts_token_type(3722); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows)
  • ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) 描述:获取tsvector列的统计数据。 返回类型:setof record 示例: 1 2 3 4 5 6 gaussdb=# SELECT ts_stat('select ''hello world''::tsvector'); ts_stat ------------- (world,1,1) (hello,1,1) (2 rows)
  • ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) 描述:测试一个配置。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT ts_debug('english', 'The Brightest supernovaes'); ts_debug ----------------------------------------------------------------------------------- (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",Brightest,{english_stem},english_stem,{brightest}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",supernovaes,{english_stem},english_stem,{supernova}) (5 rows)
  • ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 gaussdb=# SELECT ts_token_type('default'); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows)
  • ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse('default', 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows)
  • ts_parse(parser_oid oid, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse(3722, 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows)
  • 时间日期操作符 时间日期操作符如表1 时间和日期操作符所示。 用户在使用时间和日期操作符时,应使用明确的类型前缀修饰对应的操作数,以确保数据库在解析操作数的时候能够与用户预期一致,避免产生非预期的结果。 举例:以下示例没有明确数据类型,就会出现异常错误。 1 2 3 4 5 6 7 gaussdb=# SELECT date '2001-10-01' - '7' AS RESULT; ERROR: GAUSS-10416: invalid input syntax for type timestamp: "7" SQLSTATE: 22007 LINE 1: SELECT date '2001-10-01' - '7' AS RESULT; ^ CONTEXT: referenced column: result 表1 时间和日期操作符 操作符 示例 + 1 2 3 4 5 gaussdb=# SELECT date '2001-9-28' + integer '7' AS RESULT; result ------------ 2001-10-05 (1 row) 说明: 在ORA兼容模式下,查询结果为2001-10-05 00:00:00。 1 2 3 4 5 gaussdb=# SELECT date '2001-09-28' + interval '1 hour' AS RESULT; result --------------------- 2001-09-28 01:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT date '2001-09-28' + time '03:00' AS RESULT; result --------------------- 2001-09-28 03:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT interval '1 day' + interval '1 hour' AS RESULT; result ---------------- 1 day 01:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result --------------------- 2001-09-29 00:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT time '01:00' + interval '3 hours' AS RESULT; result ---------- 04:00:00 (1 row) - 1 2 3 4 5 gaussdb=# SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result -------- 3 (1 row) 1 2 3 4 5 gaussdb=# SELECT date '2001-10-01' - integer '7' AS RESULT; result --------------------- 2001-09-24 00:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result --------------------- 2001-09-27 23:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT time '05:00' - time '03:00' AS RESULT; result ---------- 02:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT time '05:00' - interval '2 hours' AS RESULT; result ---------- 03:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT timestamp '2001-09-28 23:00' - interval '23 hours' AS RESULT; result --------------------- 2001-09-28 00:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT interval '1 day' - interval '1 hour' AS RESULT; result ---------- 23:00:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' AS RESULT; result ---------------- 1 day 15:00:00 (1 row) * 1 2 3 4 5 gaussdb=# SELECT 900 * interval '1 second' AS RESULT; result ---------- 00:15:00 (1 row) 1 2 3 4 5 gaussdb=# SELECT 21 * interval '1 day' AS RESULT; result --------- 21 days (1 row) 1 2 3 4 5 gaussdb=# SELECT double precision '3.5' * interval '1 hour' AS RESULT; result ---------- 03:30:00 (1 row) / 1 2 3 4 5 gaussdb=# SELECT interval '1 hour' / double precision '1.5' AS RESULT; result ---------- 00:40:00 (1 row) 父主题: 时间和日期处理函数和操作符
  • json_type(json) 描述:入参为一个json对象,函数返回一个字符串,它代表了给定的 json值的类型。入参为null返回null。 参数:一个json值。详情请参见表13 json_type返回值。 返回类型:text 表13 json_type返回值 入参类型 返回值 数组类型的json值 ARRAY 对象类型的json值 OBJECT 字符串类型的json值 STRING 数值类型的json值 NUMBER boolean类型的json值 BOOLEAN NULL值 NULL 示例: gaussdb=# SELECT json_type('{"w":{"2":3},"2":4}'); json_type ----------- OBJECT (1 row) gaussdb=# SELECT json_type('[1,2,2,3,3,4,4,4,4,4,4,4,4]'); json_type ----------- ARRAY (1 row)
  • json_valid(json) 描述:函数返回 0 和 1 来指示给定的参数是否是一个有效的json。入参为null返回null。 参数:一个json值。 返回类型:bigint 示例: gaussdb=# SELECT json_valid('{"name":"Tom"}'); json_valid ------------ 1 (1 row) gaussdb=# SELECT json_valid('[1,23,4,5,5]'); json_valid ------------ 1 (1 row) gaussdb=# SELECT json_valid('[1,23,4,5,5]}'); json_valid ------------ 0 (1 row)
  • json_search(json, mode_str, search_str, escape_char, json_path) 描述:函数返回一个给定字符串在一个 json中的路径。它返回一个路径字符串或者由多个路径组成的数组。如果参数json、search_str或json_path任意一个是null,返回null。如果json格式错误或者json_path不是有效的路径表达式则会报错。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:如表11 参数说明所示。 表11 参数说明 参数说明 类型 描述 取值范围 json json 目标的json。 必须满足json的格式。 mode_str text 字符串“one”或者 “all”,如果是“one”,表示只获取第一个匹配到的路径;如果是“all”,则会匹配所有符合的路径。 必须是字符串“one”或者“all”,不区分大小写。 search_str text 被搜索的字符串,正常情况下为全字匹配,但是可以使用通配符:%: 匹配任意数量的任意字符,_: 匹配一个任意字符。 - escape_char text 可选的,如果search_str中包含通配符,则该参数定义为通配符的转义字符。默认为'\'。若在通配符前加上该字符,则不将该字符看做通配符。 可以是任意单个字符。 json_path text 可选的,若指定json_path,则在该路径下搜索。 json_path必须是一个有效的路径表达式。 返回类型:text 示例: --all模式 gaussdb=# SELECT json_search('{"a":"abc","b":"abc"}','all','abc'); json_search ---------------- ["$.a", "$.b"] (1 row) --one模式 gaussdb=# SELECT json_search('{"a":"abc","b":"abc"}','one','abc'); json_search ------------- "$.a" (1 row) --使用默认转义字符 gaussdb=# SELECT json_search('{"a":"abc","b":"a%c"}','one','a\%c'); json_search ------------- "$.b" (1 row)
  • json_object_agg(any, any) 描述:将值聚集为json对象。 返回类型:object-json 示例: gaussdb=# CREATE TABLE classes(name varchar, score int); CREATE TABLE gaussdb=# INSERT INTO classes VALUES('A',2); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('A',3); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('D',5); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('D',null); INSERT 0 1 gaussdb=# SELECT * FROM classes; name | score ------+------- A | 2 A | 3 D | 5 D | (4 rows) gaussdb=# SELECT json_object_agg(name, score) FROM classes GROUP BY name ORDER BY name; json_object_agg ------------------------- { "A" : 2, "A" : 3 } { "D" : 5, "D" : null } (2 rows) gaussdb=# DROP TABLE classes; DROP TABLE
  • jsonb_exists_all(jsonb, text[]) 描述:同操作符 `?&`, 字符串数组参数二里面,是否所有的元素,都在第一个参数的顶层以key\elem\scalar的形式存在。 返回类型:boolean 示例: gaussdb=# SELECT jsonb_exists_all('["1","2",3]', '{1, 2}'); jsonb_exists_all ------------------ t (1 row)
  • json_set(json, [VARIADIC any]) 描述:入参为一个json对象,若干个json_path路径和需要设置的值,json_path和值必须两两配对;此函数在一个json中使用指定的值来更新指定json_path路径上的数据,并返回修改后的json;如果指定的路径不存在值,则在对应的路径上插入值。json和json_path路径中有null值返回null,如果json格式错误或者json_path不是有效的路径表达式或者json_path包含“*”、“**”会报错。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:如表12 参数说明所示。 表12 参数说明 参数说明 类型 描述 取值范围 json json 一个json值。 必须满足json的格式。 [VARIADIC any] 可变any数组 可变参数列表,可以支持一个或多个json_path-value对。 json_path必须是一个有效的路径表达式,value可以是任意值。 返回类型:json 示例: gaussdb=# SELECT json_set('{"s":3}','$.s','d'); json_set ------------ {"s": "d"} (1 row) gaussdb=# SELECT json_set('{"s":3}','$.a','d','$.a','1'); json_set -------------------- {"a": "1", "s": 3} (1 row)
  • json_agg(any) 描述:将值聚集为json数组。 返回类型:array-json 示例: gaussdb=# CREATE TABLE classes(name varchar, score int); CREATE TABLE gaussdb=# INSERT INTO classes VALUES('A',2); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('A',3); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('D',5); INSERT 0 1 gaussdb=# INSERT INTO classes VALUES('D',null); INSERT 0 1 gaussdb=# SELECT * FROM classes; name | score ------+------- A | 2 A | 3 D | 5 D | (4 rows) gaussdb=# SELECT name, json_agg(score) score FROM classes GROUP BY name ORDER BY name; name | score ------+----------- A | [2, 3] D | [5, null] (2 rows) gaussdb=# DROP TABLE classes; DROP TABLE
  • jsonb_exists_any(jsonb, text[]) 描述:同操作符 `?|`, 字符串数组参数二里面,是否存在的元素,在第一个参数的顶层以key\elem\scalar的形式存在。 返回类型:boolean 示例: gaussdb=# SELECT jsonb_exists_any('["1","2",3]', '{1, 2, 4}'); jsonb_exists_any ------------------ t (1 row)
  • to_jsonb(anyelement) 描述:把输入的anyelement参数转换为`jsonb`类型。 返回类型:jsonb 当参数为空字符串('')时,若数据库SQL兼容模式为A,则返回结果为NULL;若数据库SQL兼容模式为PG, 则返回结果为空字符串。这是因为A兼容模式时空字符串作为NULL处理。 当参数为DATE类型时,若数据库SQL兼容模式为A,则返回结果包含时分秒;若数据库SQL兼容模式为PG, 则返回结果不包含时分秒。这是因为A兼容模式DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。 示例: gaussdb=# SELECT to_jsonb(ARRAY[1, 2, 3, 4]); to_jsonb -------------- [1, 2, 3, 4] (1 row)
  • json_remove(json, [VARIADIC text]) 描述:入参为一个json对象,和若干个需要被删除的json_path路径,这些json_path路径从可变参数列表中构造。此函数将删除json中指定json_path路径的值,并返回删除后的json。json和json_path路径中有null值返回null,如果json格式错误或者json_path不是有效的路径表达式或者json_path包含“*”、“**”会报错。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:如表9 参数说明所示。 表9 参数说明 参数说明 类型 描述 取值范围 json json 一个json值。 必须满足json的格式。 [VARIADIC text] 可变text数组 可变参数列表,可以支持一个或多个json_path路径。 json_path必须是一个有效的路径表达式。 返回类型:json 示例: gaussdb=# SELECT json_remove('[0, 1, 2, [3, 4]]', '$[0]', '$[2]'); json_remove ------------- [1, 2] (1 row) gaussdb=# SELECT json_remove('[0, 1, 2, [3, 4]]', '$[0]', '$[0]','$[0]'); json_remove ------------- [[3, 4]] (1 row)
  • json_keys(json[, json_path]) 描述:入参为一个json对象,和一个可选的json_path路径。如果没有传入json_path路径,此函数返回json对象中最上层对象的成员key值的json数组。如果传入了json_path路径,此函数返回该路径对应的json对象中最上层的成员key值的json数组。json和json_path路径中有null值返回null,如果json格式错误或者json_path不是有效的路径表达式或者json_path包含“*”、“**”会报错。 参数:如表7 参数说明所示。 表7 参数说明 参数名称 类型 描述 取值范围 json json 一个json值。 必须满足json的格式。 json_path text 可选的,一个json_path路径。 json_path必须是一个有效的路径表达式。 返回类型:json 示例: gaussdb=# SELECT json_keys('{"x": 1, "y": 2, "z": 3}'); json_keys ----------------- ["x", "y", "z"] (1 row) gaussdb=# SELECT json_keys('[1,2,3,{"name":"Tom"}]','$[3]'); json_keys ----------- ["name"] (1 row)
  • json_merge([VARIADIC any]) 描述:入参为多个json类型,入参的个数大于等于2,json对象从可变参数列表中构造;此函数将所有传入的json进行合并,并返回合并后的结果。入参中有null,返回null。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:可变参数列表,多个json对象会从这个列表中构造。 返回类型:json 示例: gaussdb=# SELECT json_merge('[1, 2]','[2]'); json_merge ------------ [1, 2, 2] (1 row) gaussdb=# SELECT json_merge('{"b":"2"}','{"a":"1"}','[1,2]'); json_merge ------------------------------ [{"a": "1", "b": "2"}, 1, 2] (1 row)
  • json_insert(json, [VARIADIC any]) 描述:入参为一个json对象,若干个json_path路径和需要插入的值,json_path和值必须两两配对,此函数在json中的json_path路径指定的位置插入一个value值,此函数只能将数据插入到不存在路径。如果json中已经存在指定的路径,则不会插入数据。json和json_path中存在null值返回null。并且json_path中不能存在“*”、“**”通配符,否则报错。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:如表6 参数说明所示。 表6 参数说明 参数名称 类型 描述 取值范围 json json 需要被插入值的json值。 必须满足json的格式。 [VARIADIC any] 可变any数组 可变参数列表,可以支持一个或多个json_path-value对。 json_path必须是一个有效的路径表达式,value可以是任意值。 返回类型:json 示例: gaussdb=# SELECT json_insert('[1, [2, 3], {"a": [4, 5]}]', '$[3]', 2); json_insert ------------------------------- [1, [2, 3], {"a": [4, 5]}, 2] (1 row) gaussdb=# SELECT json_insert('[1, [2, 3], {"a": [4, 5]}]', '$[10]', 10,'$[5]', 5); json_insert ----------------------------------- [1, [2, 3], {"a": [4, 5]}, 10, 5] (1 row)
  • json_replace(json, [VARIADIC any]) 描述:入参为一个json对象,和若干个json_path路径和需要替换的值,json_path和值必须两两配对;此函数在一个json中使用指定的值来替换指定json_path路径上的数据,并返回修改后的json。json和json_path路径中有null值返回null,如果json格式错误或者json_path不是有效的路径表达式或者json_path包含“*”、“**”会报错。如果有null值和格式错误场景同时在可变参数列表中,则按异常的先后顺序处理,先有null值返回null,先有报错则报错。 参数:如表10 参数说明所示。 表10 参数说明 参数说明 类型 描述 取值范围 json json 一个json值。 必须满足json的格式。 [VARIADIC any] 可变any入参 可变参数列表,可以支持一个或多个json_path-value对。 json_path必须是一个有效的路径表达式,value可以是任意值。 返回类型:json 示例: gaussdb=# SELECT json_replace('{"x": 1}', '$.x', 'true'); json_replace --------------- {"x": "true"} (1 row) gaussdb=# SELECT json_replace('{"x": 1}', '$.x', true, '$.x', 123, '$.x', 'asd', '$.x', null); json_replace -------------- {"x": null} (1 row)
  • json_length(json[, json_path]) 描述:入参为一个json对象,和一个可选的json_path路径。如果没有传入json_path路径,此函数返回传入json对象的长度。如果传入了json_path路径,此函数返回该路径对应的json对象的长度。json和json_path路径中有null值返回null,如果json格式错误或者json_path不是有效的路径表达式或者json_path包含“*”、“**”会报错。 参数:如表8 参数说明所示。 表8 参数说明 参数名称 类型 描述 取值范围 json json 一个json值。 必须满足json的格式。 json_path text 可选的,一个json_path路径 json_path必须是一个有效的路径表达式。 返回类型:int 示例: gaussdb=# SELECT json_length('[1,2,3,4,5]'); json_length ------------- 5 (1 row) gaussdb=# SELECT json_length('{"name":"Tom", "age":24, "like":"football"}'); json_length ------------- 3 (1 row)
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全