当前位置: 首页 > 面试题库 >

在SQL Server 2012列中查询JSON

包兴思
2023-03-14
问题内容

我在SQL Server 2012表中有一列,其中包含以下Json数据。

[{"bvin":"145a7170ec1247cfa077257e236fad69","id":"b06f6aa5ecd84be3aab27559daffc3a4"}]

现在我想在查询中使用此列数据,例如

select * 
from tb1 
left join tb2 on tb1.(this bvin inside my column) = tb2.bvin.

有没有一种方法可以在SQL Server 2012中查询JSON数据?


问题答案:

老实说,这是一种存储数据的糟糕架构,可能会导致一些严重的性能问题。

如果您真的没有控制权来更改数据库,则 可以 通过SUBSTRING如下所示解析 完成此操作,但这会导致非常不愉快的事情:

SELECT *
FROM tb1
JOIN tb2 on tb2.bvin = 
    SUBSTRING(
        tb1.json
        ,CHARINDEX('"bvin":"', tb1.json) + LEN('"bvin":"')
        ,CHARINDEX('"', tb1.json, CHARINDEX('"bvin":"', tb1.json) + LEN('"bvin":"')) - CHARINDEX('"bvin":"', tb1.json) - LEN('"bvin":"')
    )

可悲的是,这很容易。



 类似资料:
  • 我在用Cassandra存储股票信息。每个“行”都有一些基字段,如:时间、价格、关闭、打开、低、高等。在这些字段的顶部,我有一个浮动类型的值列表,其中包含一些内部系统计算。 对象的示例:

  • 我有一个名为ArtWork的实体,该实体具有属性列表 样式具有称为标题的属性 我需要一个Hibernate查询,返回所有具有style title=“Abstract”的艺术品 -谢谢你的帮助

  • 问题内容: 最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是伪数据。 是否可以根据id在emails数组中查询特定项目? 差不多:“返回电子邮件,其中id = 123)”? 问题答案: 是的,这是可能的: 是您的表名,是JSON列的名称。

  • 问题内容: 寻找所有的行,其中某个json列包含一个空对象。对于JSON数组,或者在对象中寻找特定键,这是可能的。但是我只想知道对象是否为空。似乎找不到要执行此操作的运算符。 问题答案: 有 没有平等(或等于)运算符 的数据类型 作为一个整体,因为平等是很难建立。 在可行的情况下,请考虑使用Postgres 9.4或更高版本。有关dba.SE(上一章)的相关答案中的更多详细信息: 如何从Postg

  • 本文向大家介绍SqlServer2012中First_Value函数简单分析,包括了SqlServer2012中First_Value函数简单分析的使用技巧和注意事项,需要的朋友参考一下 First_Value返回结果集中某列第一条数据的值,跟TOP 1效果一样,比较简单的一个函数 先贴测试用代码 下边使用FIRST_VALUE函数,创建一列新列,返回结果集中第一行的LastName值,这个所谓的

  • 问题内容: 这是我面临的场景的一个示例。说我有这个专栏家庭: 这是一些使用Hector的示例Java代码,用于说明如何将一些数据插入此列系列: 这有效,如果我转到cassandra-cli并列出列表,则会得到以下信息: 我现在的问题是:如何在赫克托尔中查询该数据?基本上,我需要以几种方式查询它: 给我整行,其中行键=“ rowkey1” 给我列数据,其中列名的第一部分=一些整数值 给我所有列名称的