【问题标题】:Filter string keys of array from a string in a Javascript object format in an SQL table从 SQL 表中 Javascript 对象格式的字符串中过滤数组的字符串键
【发布时间】:2020-06-02 22:12:47
【问题描述】:

我想在 SQL 表的给定列中过滤掉键(在字符串数组中给出 - ["key2"]),例如:

{ key1: val1, key2: val2, key3: val3 }

 |--row---|-object--|---value----|

 |---1----|--obj1---|--sum(obj1)-|

 |---2----|--obj2---|--sum(obj2)-|

 |---3----|--obj3---|--sum(obj3)-|

我希望能够通过使用 SQL 来做到这一点,并为每一行并行过滤数组的所有键。

例如,如果我有这些对象:

obj1 = "{ key1: val1, key2: val2, key3: val3 }"

obj2 = "{ key1: val1, key2: val2 }"

obj3 = "{ key1: val1, key2: val2, key3: val3, key4: val4, key5: val5 }"

还有一个 ["key1", "key4"] 的数组

我会得到带有新对象和新值的新表:

obj1 = "{ key2: val2, key3: val3 }" , val = val2+val3

obj2 = "{ key2: val2 }" , val = val2

obj3 = "{ key2: val2, key3: val3, key5: val5 }" , val = val2+val3+val5

有可能吗?

我尝试使用 JSON_EXTRACTOR 以将对象提取为 JSON 格式并使用过滤器函数逐一操作行,但是当我考虑它时效率不是很高,并且它没有使用查询来做过滤。

【问题讨论】:

  • 找到了一个使用 JSON_EXTRACT 的解决方案:动态地将“JSON_EXTRACT(object, '$.obj1') as obj1,”字符串附加到 SELECT。 * 关于效率 - 我还不知道它是否是最好的解决方案以及它是否可扩展。

标签: javascript sql google-cloud-platform


【解决方案1】:

据我了解,您使用的是 MySQL。我认为你找到的方式是正确的,根据this article about JSON_EXTRACT() 指出:

SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';

Here你可以找到官方文档。

您始终可以使用Query Execution Plan 来验证查询的效率,但这也取决于您的表、列、索引和 Where 子句中的条件。

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2021-12-15
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多