sql - 如何对 PostgreSQL 主 ID 列执行 LIKE 查询?

标签 sql ruby-on-rails ruby postgresql activerecord

如果我有一个数字(例如 88)并且我想在 Rails 中对主 ID 列执行 LIKE 查询以返回在 ID 末尾包含该数字的所有记录(即:88、288 等.),我该怎么做?下面是生成结果的代码,它在 SQLLite 中运行良好:

@item = Item.where("id like ?", "88").all

在 PostgreSQL 中,我遇到了这个错误:

PG::Error: ERROR:  operator does not exist: integer ~~ unknown

我该怎么做?我试过将数字转换为字符串,但这似乎也不起作用。

最佳答案

根据欧文的回答:
这是一个非常古老的问题,但万一有人需要它,有一个非常简单的答案,使用 ::text cast:

Item.where("(id::text LIKE ?)", "%#{numeric_variable}").all

这样,您就可以在字符串中的任意位置找到数字。
仅当您希望数字位于字符串末尾时,才使用左侧的 % 通配符。
如果您希望数字位于字符串中的任意位置,也可以在右侧使用 % 通配符。

关于sql - 如何对 PostgreSQL 主 ID 列执行 LIKE 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654657/

相关文章:

sql - 表示数学范围的最佳数据模型是什么(在数据库、xml、json 中……)?

php - 尝试将准备好的语句与 ILIKE 运算符一起使用

ruby-on-rails - rails 、回形针和 S3。避免保存原始图像?

ruby-on-rails - 在 Rails 中将数据公开为 XML 和 JSON

ruby-on-rails - 如何在返回最新结果时使 Heroku 缓存名称范围

Ruby 动态命名数组

php - 使用 MySQL 和 PHP 的 SQL 语法错误

sql - 如何传递带引号的参数

ruby-on-rails - 将 rails button_to helper 更改为 button_tag helper

ruby-on-rails - 测试 Rails 中对无效 UTF-8 的优雅处理