如何基于对象值进行查询



我有一个板条箱数据库表,其中包含如下记录:

  {
    "businessareaname": "test",
    "profile": {
      "phone": "",
      "fullname": "",
      "email": "abe-10@spatially.com"
    }
  }

我尝试过查询:

select * 
from myTable 
where profile['email'] = 'abe-10@spatially.com';

但什么也没回来。 如何根据对象中的电子邮件值拉取记录?

这不是一个平面表,所以这是我显示表结构的最佳尝试。 第一行是标题,接下来的两行是数据。

    business name | profile:
                    - phone
                    - fullname
                    - email
    -------------------------------------
    "test"       | ""
                   ""
                   "abe-10@spatially.com"
   -------------------------------------
    "other one"  | "(415)884-9938"
                   "Abe Miessler"
                   "abe@test.com"

你写的例子应该有效并且是正确的。

它可能不起作用的原因是表架构不正确,特别是:

  • 电子邮件列是使用 INDEX OFF
  • 创建的
  • 对象列是使用列类型创建的IGNORED
  • 电子邮件
  • 列上有一个全文索引/分析器,因此电子邮件被标记化。

这里有一个完整的工作示例:

create table t1 (profile object as (email string));
insert into t1 (profile) values ({email='abe-10@spatially.com'});
refresh table t1;
select * from t1 where profile['email'] = 'abe-10@spatially.com';

如果通过管道传输到crash这将输出:

CONNECT OK
CREATE OK, 1 row affected  (0.286 sec)
INSERT OK, 1 row affected  (0.082 sec)
REFRESH OK, 1 row affected  (0.065 sec)
+-----------------------------------+
| profile                           |
+-----------------------------------+
| {"email": "abe-10@spatially.com"} |
+-----------------------------------+
SELECT 1 row in set (0.087 sec)

相关内容

  • 没有找到相关文章

最新更新