【问题标题】:SQL - How to test the existence of a specific value in a ARRAY<STRUCT<value STRING>>SQL - 如何测试 ARRAY<STRUCT<value STRING>> 中是否存在特定值
【发布时间】:2020-07-01 08:41:51
【问题描述】:

对于 SQL 查询,我需要选择在其“标签”数组中具有特定值的行。 我是 SQL 的初学者,但我觉得我找不到关于它的好的文档。

我试过了:

SELECT tags FROM [my_database] WHERE tags.value = "something"

无法访问类型为 ARRAY

的值的字段值

SELECT * FROM [my_database] WHERE tags = "something"

对于参数类型的运算符 = 没有匹配的签名:ARRAY, STRING。支持的签名:ANY = ANY

我的数据库说:标签是一个记录(字符串数组)并且值一个字符串。

我想要的结果是一个在标签数组中包含特定值的所有行的列表

我觉得答案真的很简单……非常感谢!

【问题讨论】:

    标签: mysql sql arrays where-clause


    【解决方案1】:

    我认为这不是一个好的答案,但我还是给你以下一个:

    例如,[my_database] 有如下表格:table1、table2、table3、table4,这些表格都有一个tags 字段。我建议你以下一个

    SELECT tags FROM table1
    UNION ALL
    SELECT tags FROM table2
    UNION ALL
    SELECT tags FROM table3
    UNION ALL
    SELECT tags FROM table4
    WHERE tags = "something";
    

    【讨论】:

    • 确实不是我等待的答案,但谢谢。我在同一张桌子上工作,而且不是很多人..
    • 尝试一下:SELECT tags FROM [my_database] WHERE tags LIKE "%something%";,这是我学习 sql 的链接,它可以帮助您了解 sql:sql.sh。这是 sql 中的 LIKE :like
    • 感谢您的链接。我试过你的答案(已经试过了),但我有一个错误。 “对于参数类型的运算符 LIKE 没有匹配的签名:ARRAY>, STRING。支持的签名:STRING LIKE STRING;BYTES LIKE BYTES at [1:53]”
    猜你喜欢
    • 2022-12-17
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多