获取空 hstore 的记录
Posted
技术标签:
【中文标题】获取空 hstore 的记录【英文标题】:Get records with empty hstore 【发布时间】:2014-06-29 12:11:15 【问题描述】:我正在使用带有 hstore 扩展名的 PostgreSQL 数据库,我正在尝试做一个最简单的事情 - 获取所有记录,其中 vd_data (hstore)
列是空的 ()。
这听起来很容易,但我自己无法做到,也无法在互联网上找到任何相关信息。我在我的 Rails 应用程序中使用它,所以我将使用 activerecord DSL 发布一些示例:
Video.where('vd_data != NULL')
# => [] (empty result. I have about 20 videos with vd_data populated in my db)
Video.where('vd_data != ')
# => Syntax error
Video.where('vd_data != ""')
# => ERROR: zero-length delimited identifier at or near """"
谁能告诉我这种查询在纯 SQL 中的外观?
【问题讨论】:
【参考方案1】: 不是
HSTORE
的有效表达式。
改为使用表达式hstore('')
甚至简单的''
来表示空的HSTORE
,如下所示:
Video.where("vd_data != ''")
SQLFiddle Demo 中的证明。
【讨论】:
哦,现在我明白了。我正在尝试Video.where('vd_data != ""')
,它给了我一个语法错误,所以我离开了那个轨道。太好了,谢谢!
与 mysql 或 SQLite 不同,在 PostgreSQL 中使用单引号和双引号有很大的不同。要表示字符串值,您必须始终使用单引号。要转义标识符名称,您必须使用双引号。以上是关于获取空 hstore 的记录的主要内容,如果未能解决你的问题,请参考以下文章