ruby-on-rails - 使用字符串结尾字符 (/z) 的 AR 查询中的正则表达式返回空的 AR 关系;使用行尾 ($) [PG] 返回预期结果
问题描述
注意:以下使用 PG 数据库。
我已经设置了模型 Foo 属于模型 Bar。在尝试返回 bar.name 以“abc”结尾(例如“def abc”但不是“def abc-2”)的所有条目 Foo 时,我编写了查询:
Foo.joins(:bar).where('bar.name ~* ?', "abc\z")
此查询不返回任何结果。但是,此查询:
Foo.joins(:bar).where('bar.name ~* ?', "abc$")
返回我预期的结果。
再深入一点,我测试了相同的查询,但省略了“abc”(即仅查询正则表达式锚点)。对于我当前的数据库,“\z”查询返回 94 个结果,而“$”查询返回 2,016 个结果。
我想了解(a)我的查询是否存在根本性错误,以及(b)导致这种行为的幕后情况。似乎数据库正在像一堆块状的多行字符串一样被查询,而不是每个条目字段都被视为自己的字符串,但我不知道为什么,或者即使是这样。
解决方案
推荐阅读
- flow-project - 错误“无法连接到本地主机的 TraCI 服务器:40335 [Errno 111] 连接被拒绝”
- javascript - TypeScript文件不需要导出时怎么办
- python - Python ldap 与 ldap3 不一致
- php - 使用 foreach 避免多余的 XPath 表单处理代码
- azure-functions - 如何使用循环在 azure 函数中读取 azure blob 中的批处理文件
- go - goroutine 在创建通道时如何表现
- amazon-web-services - 任务完成后自动停止 EC2?
- python-3.x - 无法运行 python 脚本,错误显示 ModuleNotFoundError: No module named 'src'
- unity3d - 是否可以从 slam 算法中获取 IRL 对象的形状以隐藏 3D 对象?
- php - preg_replace 如何删除除字母数字以外的所有数字