我有一个jsonb列occurrences
,其中包含以下
[{"occurs_on"=>"2019-02-04 23:00:00 UTC", "status"=>"none"},
{"occurs_on"=>"2019-02-05 23:00:00 UTC", "status"=>"none"}]
我想做的是获取(日期时间字符串的)日期部分等于2019-02-04
的元素,因此为此使用LIKE
Event.where("events.occurrences ->> :key LIKE :value",
:key => 'occurs_on', :value => '2019-02-04%')
这将返回一个空集合,并且不确定为什么找不到该元素
更新
我尝试了类似的方法
sql = <<-HEREDOC
SELECT * FROM events WHERE ('{"status": "none"}' <@ ANY (ARRAY(select jsonb_array_elements(occurrences)))) LIMIT 1
HEREDOC
result = ActiveRecord::Base.connection.execute(sql)
它有效,但是如果我将sql更改为
SELECT * FROM events WHERE ('occurrences->"occurs_on" LIKE "2019-02-04"' <@ ANY (ARRAY(select jsonb_array_elements(occurrences)))) LIMIT 1
它引发错误!
有人知道在这种情况下如何正确使用LIKE吗?