【发布时间】:2020-06-12 12:54:50
【问题描述】:
我有一个名为 Register 的表
Id、Type_status、状态、描述
例子:
ID Type_status Status Description
1 8000 8017 test
我有一个名为 History 的表,其结构如下
Id、Id_Register、History_status、Payload
例子
Id Id_Register History_status Payload
1 1 8015 {"name": "test"}
2 1 8016 {"token": "example"}
3 1 8017 {"email": "test@test.com"}
当Id_Register = 1 和History_status 是8015 和@987654328 时,我需要能够执行一个查询,该查询将为我带来历史表中Record_Id 和Payload 的值@ 与History_status 8017 是email = test@test.com
预期的结果是
Id_Register Name Token
1 test. example
我需要以电子邮件test@test.com 的形式获取 8017 状态下记录的所有名称和令牌
提到我已经解决了json中文本的比较,我无法实现的是根据我提到的状态获取同一个表的两个值的查询。
JSON_VALUE(cast(Payload as nvarchar(max)), '$.email') LIKE '%test@test.com%'
【问题讨论】:
-
那么最终输出应该是什么样子?
-
也许您需要将有效负载列标准化为有效负载类型和有效负载值之类的内容
-
@Mureinik 更新!
-
SQL Server 版本是多少?
-
@PeterSmith 如何比较json值我已经解决了,但是我无法获取两个寄存器的值只有1个Register_Id...
标签: sql sql-server sql-server-2016 json-query