首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过变量路径访问JSONB元素

通过变量路径访问JSONB元素
EN

Stack Overflow用户
提问于 2019-10-01 14:58:33
回答 2查看 285关注 0票数 2

我需要将两个json值连接成一个。但这些变量的位置是动态的,我从数据库中获取jsonb中的位置。

所以我希望能做这样的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select '{"a": {"b": {"c": "d"}}}'::jsonb #> '{"a","b","c"}';

但我不能让它与变量一起工作,因为我不知道将路径转换为什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select '{"a": {"b": {"c": "d"}}}'::jsonb #> ('{"a","' || variable_from_database || '","c"}')::dataTypeOfJsonbPath;

我还发现我可以使用这样的查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select value#>>'{"c"}' from jsonb_each(('{"a": {"b": {"c": "d"}}}'::jsonb#>'{"a"}')) where key = 'b';

这将解决获取值的问题,但现在我需要将它们连接到原始的jsonb值中,而我现在不知道如何完成这一点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jsonb_set('{"a": {"b": {"c": "d"}}}'::jsonb, ('{"a","' || value2FromDatabase || '", "c"}'),
                                          (value1 || value2)::jsonb, false);

由于同样的原因,上面的操作失败了。

列出jsonb_set所需的参数告诉我,第二个参数应该是数组类型,但我不知道如何将该字符串转换为数组才能使其工作。

谁能告诉我如何在jsonb对象中将一个值附加到另一个值,其中两者的键都在动态位置上?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-01 15:07:04

将您的路径转换为text[]类型

demo:db<>fiddle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
    '{"a": {"b": {"c": "d"}}}'::jsonb #> ('{"a","' || path || '","c"}')::text[]
FROM 
    mytable
票数 3
EN

Stack Overflow用户

发布于 2019-10-01 15:05:45

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select '{"a": {"b": {"c": "d"}}}'::jsonb #>> ('{"a","'||'b'||'","c"}')::text[];

这是可行的,所以我需要强制转换为text[]。这是可行的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58187549

复制
相关文章
深入理解 Laravel 中 config 配置加载原理
本文重点讲解第二个config配置加载。第一个请查看 深入理解 Laravel 中.env 文件读取
全栈程序员站长
2021/11/10
1.2K0
Yaf---Session | 模板 | 模型 | Cli模式
Yaf_Session是Yaf对Session的包装, 实现了Iterator, ArrayAccess, Countable接口, 方便使用.关于Yaf_Session的文档介绍:http://www.laruence.com/manual/yaf.class.session.html
Marco爱吃红烧肉
2021/07/23
2K0
Laravel框架中composer自动加载的实现分析
自动加载允许你通过即用即加载的方式来加载需要的类文件,而不用每次都写繁琐的require 和include语句。因此,每一次请求的执行过程都只加载必须的类,也不不要关心类的加载问题,只要需要的时候直接使用即可。
用户8832582
2021/07/13
9150
Laravel中Facade的加载过程与原理详解
前言 本文主要给大家介绍了关于Laravel中Facade加载过程与原理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 简介
用户2323866
2021/07/08
5790
laravel 自定义常量方法
step1 按路径生成constants文件 app/config/constants.php
全栈程序员站长
2021/10/25
7590
MySQL在删除表时I/O错误原因分析
问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺序在后台跑着。跑完后察看日志发现一个问题,MySQL服务的错误日志中出现多条类似以下信息的报错: [ERROR] InnoDB: Trying to do I/O to a tablespace which does not exist. I/O type: read, page: [page id: space=32, page number=57890], I/O length
腾讯数据库技术
2018/07/19
1.9K0
在 Laravel 中编写高级的 Artisan 命令
在上一篇教程中,学院君向大家介绍了什么是 Artisan 命令,系统内置的 Artisan 命令,以及如何编写一个简单的 Artisan 命令。我们完全可以将命令行看作与 Web 应用同等的控制台应用(实际上,Laravel 底层也是这么做的),它具备自己的路由、Kernel、输入、控制器(命令类)、输出。因此,在这篇教程中,我们将更进一步,一起来看下如何编写更加高级的 Artisan 命令,比如带输入参数、选项,以及能够与用户互动,输出图表/进度条的 Artisan 命令。
学院君
2021/01/08
8.3K0
laravel 预加载特定的列
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112351.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
7150
laravel 预加载特定的列
[Go] go常量中的无类型常量
Go语言的常量有个不同寻常之处。虽然一个常量可以有任意一个确定的基础类型,例如int或float64,或者是类似time.Duration这样命名的基础类型,但是许多常量并没有一个明确的基础类型。
唯一Chat
2020/12/29
1.6K0
PHP之内置web服务器
这个主要是用来做本地的开发用的。不能用于线上环境。现在我就介绍一下这个工具如何使用。
魔王卷子
2019/05/28
3.1K0
Laravel 6.12.0 版本发布,支持从扩展包加载模型工厂
Laravel 开发团队本周发布了 6.12.0 版本,此次更新支持从扩展包加载模型工厂,通过 dump 函数测试 Session 数据,以及很多其他新特性。另外,这次更新还包含了很多第三方开发者贡献的、用于优化重复操作的语法糖,例如过滤请求输入字段中的非布尔值。
学院君
2020/02/19
7760
PHP之内置web服务器
这个主要是用来做本地的开发用的。不能用于线上环境。现在我就介绍一下这个工具如何使用。
魔王卷子
2019/05/24
3.8K0
PHP之内置web服务器
行为设计模式及其在JVM中的应用
在上篇文章中我们说到创建者设计模式。 现在我们来看看行为设计模式。 这些模式关注我们的对象如何相互交互或者我们如何与它们交互。
从大数据到人工智能
2022/01/20
9940
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
类加载时机 : Java 程序执行时 , 并不是一开始将所有的字节码文件都加载到内存中 , 而是用到时才进行加载 ;
韩曙亮
2023/03/29
3.7K0
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
Java中的常量
常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型和字符串型等。通常是指在Java程序中固定不变的数据。
用户8639654
2021/07/19
9120
在Laravel 的 Blade 模版中实现定义变量
有时候我们需要在 Laravel 的 Blade 模版中定义一些变量,而 Blade 却没有提供这样的方法/
用户8664418
2021/07/13
3.7K0
点击加载更多

相似问题

Laravel:如何从刀片模板访问类常量

20

laravel访问刀片中的模型常量

20

未加载Laravel刀片页面

12

在laravel刀片指令中使用未定义的常量

123

无法加载laravel刀片文件中的图像

231
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文