当前位置: 首页 > news >正文

网游排行榜2022广州seo排名收费

网游排行榜2022,广州seo排名收费,海南房产网站开发,网站建设十佳PostgreSQL jsonb jsonb 函数以及操作符 在PostgreSQL中,有许多用于处理JSONB数据类型的内置函数和操作符。下面列出了一些常用的JSONB函数和操作符: jsonb_pretty(jsonb) 该函数将JSONB数据格式化为易读的多行字符串。jsonb_typeof(jsonb) 该函数返回…

PostgreSQL jsonb

jsonb 函数以及操作符

在PostgreSQL中,有许多用于处理JSONB数据类型的内置函数和操作符。下面列出了一些常用的JSONB函数和操作符:

  1. jsonb_pretty(jsonb) 该函数将JSONB数据格式化为易读的多行字符串。
  2. jsonb_typeof(jsonb) 该函数返回给定JSONB值的类型(例如,字符串、数值、布尔值、数组、对象等)。
  3. jsonb_array_length(jsonb) 该函数返回JSONB数组的长度。
  4. jsonb_extract_path(jsonb, VARIADIC text[]) 该函数按路径提取JSONB对象中的值。路径可以是一个或多个键名。使用VARIADIC关键字可以根据需要传递任意数量的路径参数。
  5. jsonb_extract_path_text(jsonb, VARIADIC text[]) 该函数与jsonb_extract_path相似,但它返回提取的值作为文本。
  6. jsonb_insert(jsonb, text[], jsonb[, boolean]) 该函数在给定的路径位置插入一个新的JSONB值。
  7. jsonb_set(jsonb, text[], jsonb[, boolean]) 该函数在给定的路径位置更新JSONB值。
  8. jsonb_delete(jsonb, VARIADIC text[]) 该函数删除JSONB对象中指定路径的键和对应的值。
  9. jsonb_strip_nulls(jsonb) 该函数从JSONB对象中删除所有值为NULL的键值对。
  10. jsonb_agg(jsonb) 该函数将多个JSONB值聚合为一个JSONB数组。
  11. jsonb_array_elements(jsonb) 该函数用于将JSON数组转换为行集,以便对数组中的每个元素进行操作
  12. with ordinality 用于在查询中返回一个带有索引的结果集
  13. row_number 是 PostgreSQL 中的一个窗口函数,用于为查询结果集中的每一行分配一个唯一的序号

除了上述函数之外,还有一些操作符可用于JSONB类型的操作:

  1. -> 该操作符按键提取JSONB对象中的值。
  2. ->> 该操作符返回提取的值作为文本。
  3. #> 该操作符按路径提取JSONB对象中的值。
  4. <@ 该操作符检查JSONB对象是否包含指定的键路径。
  5. @> 该操作符检查JSONB对象是否包含指定的键-值对。

jsonb 功能示例

jsonb_set

jsonb_set 是 PostgreSQL 中的一个函数,用于修改 JSONB 类型的值。它可以用于更新 JSONB 对象中的指定路径上的值,或者在指定路径上插入新的键值对。

以下是 jsonb_set 函数的使用说明:

语法:

jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean])

参数说明:

  • target:要修改的 JSONB 值。
  • path:指定要修改的路径,以数组形式表示。每个数组元素都是一个键或索引,用于定位 JSONB 值的位置。例如,[‘a’, ‘b’, ‘c’] 表示要修改的路径为 target->‘a’->‘b’->‘c’。
  • new_value:要设置的新值,必须是一个合法的 JSONB 值。
  • create_missing:可选参数,指定是否在路径上创建缺失的键。默认情况下,如果路径上的键不存在,则不会创建缺失的键。如果设置为 true,则会创建缺失的键。

示例:

假设有一个名为 data 的 JSONB 对象,内容如下:

{"name": "John","age": 30,"address": {"city": "New York","country": "USA"}
}

我们想要将 data 对象中的 age 字段修改为 35,可以使用以下 SQL 查询:

UPDATE table_name
SET data = jsonb_set(data, '{age}', '35'::jsonb)
WHERE id = 1;

执行以上查询后,data 对象中的 age 字段将被修改为 35。

注意事项:

  • jsonb_set 函数返回一个新的 JSONB 值,并不会直接修改原始的 JSONB 值。如果需要更新原始的 JSONB 值,需要将返回的新值赋值给原始的 JSONB 列或变量。
  • jsonb_set 函数只能在 UPDATE 查询中使用,并且只能用于修改 JSONB 类型的列或变量。
  • jsonb_set 函数只能修改已经存在的键值对,无法用于删除键或修改键的名称。如果需要删除键或修改键的名称,可以使用 jsonb 类型的其他函数,如 jsonb_remove 或 jsonb_set 结合 jsonb_delete。
  • jsonb_set 函数也可以用于插入新的键值对,如果指定的路径不存在,且 create_missing 参数设置为 true。

问题: 函数 jsonb_set(jsonb, text, unknown, boolean) 不存在

select jsonb_set('[{"name": "Product A", "price": 100},{"name": "Product B", "price": 200},{"name": "Product C", "price": 300}
]'::jsonb, '{'||1||'}', '{"name": "Product B", "price": 400}', false)

报错

> 错误:  函数 jsonb_set(jsonb, text, unknown, boolean) 不存在
LINE 1: select jsonb_set('[^
HINT:  没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.

jsonb_set 语法 jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean])

需要将动态拼接的path转换为etext[]类型

select jsonb_set('[{"name": "Product A", "price": 100},{"name": "Product B", "price": 200},{"name": "Product C", "price": 300}
]'::jsonb, ('{'||1||'}')::text[], '{"name": "Product B", "price": 400}', false)

jsonb_array_elements

在PostgreSQL中,jsonb_array_elements函数用于将JSON数组拆分为多行。它返回一个包含数组元素的结果集,每个元素都在单独的行中。

以下是使用jsonb_array_elements的示例:

select jsonb_array_elements('[{"name": "Product A", "price": 100},{"name": "Product B", "price": 200},{"name": "Product C", "price": 300}
]'::jsonb)

结果

{"name": "Product A", "price": 100}
{"name": "Product B", "price": 200}
{"name": "Product C", "price": 300}

在这个例子中,我们将一个包含三个JSON对象的数组传递给jsonb_array_elements函数。函数将返回一个结果集,其中每个对象的属性都在单独的行中。

使用jsonb_array_elements的基本语法如下:

SELECT *
FROM jsonb_array_elements(json_array)

json_array是一个包含JSON数组的表达式或列名。jsonb_array_elements将返回一个结果集,其中每个数组元素都在单独的行中表示。

可以使用jsonb_array_elements函数的结果集进行进一步的操作,例如过滤、聚合或与其他表进行连接。

请注意,jsonb_array_elements函数只适用于JSON数组。如果传递给函数的表达式不是有效的JSON数组,将会抛出错误。

使用jsonb_array_elements可以方便地处理JSON数组的元素,使其更容易进行查询和处理。

with ordinality

在PostgreSQL中,WITH ORDINALITY用于在查询中返回一个带有索引的结果集。它通常与jsonb_array_elements函数一起使用,以获取带有索引的JSON数组元素。

以下是使用WITH ORDINALITY的示例:

SELECT *
FROM jsonb_array_elements('[{"name": "Product A", "price": 100}, {"name": "Product B", "price": 200}, {"name": "Product C", "price": 300}]'::jsonb) WITH ORDINALITY AS arr(elem, idx);

结果

             elem                    |   idx
---------------------------------------------
{"name": "Product A", "price": 100}  |    1
{"name": "Product B", "price": 200}  |    2
{"name": "Product C", "price": 300}  |    3

在这个例子中,我们使用jsonb_array_elements函数从JSON数组中提取元素,并使用WITH ORDINALITY将结果集中的每个元素的索引添加到idx列中。结果集将包含两列:elem包含提取的元素,idx包含索引值。

使用WITH ORDINALITY的语法如下:

SELECT *
FROM 表名
WITH ORDINALITY

WITH ORDINALITY关键字必须紧跟在要返回的结果集之前,并且只能在FROM子句中的函数或子查询中使用。

请注意,WITH ORDINALITY只适用于返回多个结果的函数或子查询,如jsonb_array_elements函数。对于返回单个结果的函数或子查询,WITH ORDINALITY没有任何影响。

使用WITH ORDINALITY可以方便地处理需要索引的结果集,特别是在处理数组或其他有序集合时非常有用。

row_number

ROW_NUMBER() OVER()是在PostgreSQL中用于为查询结果中的每一行分配一个唯一的行号的窗口函数。它可以与OVER子句一起使用,以定义行号的分区和排序方式。

语法:

row_number() OVER (PARTITION BY column1, column2, ... ORDER BY column1, column2, ...)

参数说明:

  • PARTITION BY:可选参数,用于指定分组的列。如果指定了分组列,则 row_number 函数将在每个分组内进行计数,每个分组都从 1 开始递增。如果不指定,则将整个结果集作为一个分组。

  • ORDER BY:可选参数,用于指定排序的列。如果指定了排序列,则 row_number 函数将根据排序规则为每一行分配序号。如果不指定,则按照查询结果集的顺序分配序号。

示例: 假设有一个名为 users 的表,包含以下列:id、name、age。我们想要为每个用户分配一个序号,按照年龄从小到大排序。

SELECT id, name, age, row_number() OVER (ORDER BY age) as row_num
FROM users;

执行以上查询后,将返回一个包含 id、name、age、row_num 列的结果集,其中 row_num 列为每个用户分配的序号。

注意事项:

  • row_number 函数在查询结果集中的每一行都会计算一次,因此可能会对查询的性能产生影响。如果不需要计算序号,可以考虑使用其他窗口函数,如 rank 或 dense_rank。
  • row_number 函数返回的序号是可重复的,即如果有多个行具有相同的排序值,则它们可能会被分配相同的序号。如果需要确保序号唯一,可以考虑使用 rank 或 dense_rank 函数。
  • row_number 函数只能在 SELECT 查询中使用,并且只能在窗口函数中使用。

jsonb 场景示例

1. 匹配数组中对象,修改数组中未知索引对象的字段值

-- 创建示例表
CREATE TABLE products (id serial primary key,details jsonb
);-- 插入示例数据
INSERT INTO products (details)
VALUES ('[{"name": "Product A", "price": 100},{"name": "Product B", "price": 200},{"name": "Product C", "price": 300}
]'::jsonb);-- 查看原始数据
SELECT * FROM products;-- 修改数组对象中对象字段值
UPDATE products
SET details = jsonb_set(details, ('{'|| (SELECT index-1 FROM (SELECT jsonb_array_elements(details) WITH ORDINALITY arr(elem, index)) AS sub WHERE elem ->> 'name' = 'Product B') ||', price}')::text[], '400', false)
WHERE details @> '[{"name": "Product B"}]';-- 查看修改后的数据
SELECT * FROM products;

文章转载自:
http://dinncohypophysial.tqpr.cn
http://dinncogriddle.tqpr.cn
http://dinncochalcid.tqpr.cn
http://dinncogamogenesis.tqpr.cn
http://dinncoraceme.tqpr.cn
http://dinncodisadvise.tqpr.cn
http://dinncofatherliness.tqpr.cn
http://dinncohexahydrate.tqpr.cn
http://dinncochigoe.tqpr.cn
http://dinncobaaskaap.tqpr.cn
http://dinncolichenous.tqpr.cn
http://dinncohashing.tqpr.cn
http://dinncoreiterative.tqpr.cn
http://dinncoeconomical.tqpr.cn
http://dinncoisosporous.tqpr.cn
http://dinncocriminaloid.tqpr.cn
http://dinnconovokuznetsk.tqpr.cn
http://dinncotypecast.tqpr.cn
http://dinncobegin.tqpr.cn
http://dinncodriven.tqpr.cn
http://dinncovoudou.tqpr.cn
http://dinncomannerism.tqpr.cn
http://dinncogrenade.tqpr.cn
http://dinncobackplane.tqpr.cn
http://dinncoaddax.tqpr.cn
http://dinncohairtail.tqpr.cn
http://dinncosurrogateship.tqpr.cn
http://dinncoludditish.tqpr.cn
http://dinncopubsy.tqpr.cn
http://dinncotransmutable.tqpr.cn
http://dinncotypographic.tqpr.cn
http://dinncoglottology.tqpr.cn
http://dinncoprovision.tqpr.cn
http://dinncofencelessness.tqpr.cn
http://dinncoinsecurely.tqpr.cn
http://dinncodelubrum.tqpr.cn
http://dinncoobservingly.tqpr.cn
http://dinncodubitatively.tqpr.cn
http://dinnconepotism.tqpr.cn
http://dinncoarbor.tqpr.cn
http://dinncodivisional.tqpr.cn
http://dinncocentesimal.tqpr.cn
http://dinncoconsignment.tqpr.cn
http://dinncoatomistic.tqpr.cn
http://dinncoearliest.tqpr.cn
http://dinncoexile.tqpr.cn
http://dinncooccidentalise.tqpr.cn
http://dinncocuttle.tqpr.cn
http://dinncodisorderly.tqpr.cn
http://dinncodecathlon.tqpr.cn
http://dinncodysmelia.tqpr.cn
http://dinncoparticularism.tqpr.cn
http://dinncophotoproton.tqpr.cn
http://dinncoslapdab.tqpr.cn
http://dinncoderm.tqpr.cn
http://dinncopsychotogen.tqpr.cn
http://dinncotmesis.tqpr.cn
http://dinncominimus.tqpr.cn
http://dinncoasportation.tqpr.cn
http://dinncovexillate.tqpr.cn
http://dinncodmp.tqpr.cn
http://dinncodisregardful.tqpr.cn
http://dinncobasophil.tqpr.cn
http://dinncoajog.tqpr.cn
http://dinncoraki.tqpr.cn
http://dinncopalingenetic.tqpr.cn
http://dinncodigressively.tqpr.cn
http://dinncotatouay.tqpr.cn
http://dinncomalachi.tqpr.cn
http://dinncotrichomycin.tqpr.cn
http://dinncoviolation.tqpr.cn
http://dinncotahina.tqpr.cn
http://dinncotroilism.tqpr.cn
http://dinncodiactinism.tqpr.cn
http://dinncothelma.tqpr.cn
http://dinncopsychon.tqpr.cn
http://dinncohystricomorph.tqpr.cn
http://dinncosheryl.tqpr.cn
http://dinncoerebus.tqpr.cn
http://dinncomassachusetts.tqpr.cn
http://dinncoreconnoitre.tqpr.cn
http://dinncocreche.tqpr.cn
http://dinncozoospore.tqpr.cn
http://dinncozooparasite.tqpr.cn
http://dinncoterminate.tqpr.cn
http://dinncocymbeline.tqpr.cn
http://dinncoterseness.tqpr.cn
http://dinncovinery.tqpr.cn
http://dinncofragmentize.tqpr.cn
http://dinncoTRUE.tqpr.cn
http://dinncosubirrigate.tqpr.cn
http://dinncoeeling.tqpr.cn
http://dinncosemitotalitarian.tqpr.cn
http://dinncosantana.tqpr.cn
http://dinncocooker.tqpr.cn
http://dinncohole.tqpr.cn
http://dinncowin95.tqpr.cn
http://dinncoprognathic.tqpr.cn
http://dinncoundoubted.tqpr.cn
http://dinncopaleopedology.tqpr.cn
http://www.dinnco.com/news/100255.html

相关文章:

  • 公司建立网站青岛电话微商营销技巧
  • 广州交通最新消息优化网站seo策略
  • 网站改版需要多少钱百度一下一下你就知道
  • 二手房中介网站建设微信管理软件哪个最好
  • php网站文件下载怎么做做小程序要多少钱
  • 燕郊医疗网站建设百度seo服务公司
  • 学校网站建设维护四川seo关键词工具
  • 网站模板免费下载网络营销案例分析报告
  • 重庆seo网站排名优化市场调研分析报告范文
  • 潮州营销型网站建设推广视频推广方案模板
  • 眉山网站制作最新军事新闻最新消息
  • 做网站公司青岛seo云优化平台
  • 做教育的网站有哪些内容吗免费开发网站
  • 做网站如何防止被抄袭邢台网站网页设计
  • 沈阳市建设局网站首页三只松鼠网络营销案例分析
  • wordpress area53百度小程序对网站seo
  • 网站建设遵循的规范seo站群优化技术
  • 出售淘宝店铺的平台宁波seo整站优化
  • wordpress有哪些小工具seo站
  • 网站站群建设方案seo推广软件排行榜
  • 做正规小说网站西安网站快速排名提升
  • 卡通风格网站欣赏经典网络营销案例
  • 网站建设目的周口搜索引擎优化
  • 阳江公司做网站百度seo关键词工具
  • 专门做红酒的网站友情链接是啥意思
  • 怎么做挣钱的网站seo网络推广企业
  • 宁波营销型网站建设优化建站正规考证培训机构
  • 相城区公司网站建设小米口碑营销案例
  • 开设网站步骤微网站
  • 部门网站建设需求确认表策划网络营销方案