sql - 在 Rails 和 Postgresql 中查找带空格和不带空格的单词

标签 sql ruby-on-rails ruby regex postgresql

我正在尝试找出可以在 Ruby on Rails 中使用的语句,该语句执行 SQL 查询以匹配可能有或可能没有任何空格的词与也可能有或可能没有任何空格的相似词。 例如:

Matthew Jones or MatthewJones

应该匹配

Matthew Jones or MatthewJones

最佳答案

您可以使用 postgres 执行此操作 REPLACE功能:

SELECT * FROM mytable 
    WHERE REPLACE(username, ' ', '') = REPLACE("Matthew Jones", ' ', '')

它将同时匹配 MatthewJonesMatthew Jones

你可以在 ActiveRecord 查询中写这样的东西:

MyTable.where("REPLACE(username, ' ', '') = REPLACE('John Bob Jones', ' ', '')")

更新:

您可以使用 ILIKE 使查询不区分大小写:

User.where("REPLACE(username, ' ', '') ILIKE REPLACE(?, ' ', '')", "John Bob Jones")

关于sql - 在 Rails 和 Postgresql 中查找带空格和不带空格的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32302445/

相关文章:

java - JOOQ 中的提交钩子(Hook)

java - JSP/SQL 语法 - 在语句中使用变量

ruby-on-rails - 使用 Rails 2.3.5 运行 Thinking Sphinx 时出现问题

ruby-on-rails - 使用参数查找失败的 Sidekiq 作业列表

arrays - 根据某些元素中可能为 nil 的属性对数组进行排序

sql - 从 Rails 3 中的 Active-record 查询中检索 SQL 查询

sql - 在 sql join 中使用列而不将其添加到 group by 子句

mysql - 在相互引用的表中使用外键的正确方法是什么

ruby-on-rails - 基于关系创建范围

ruby - 如何在子目录中创建 Guard 监视文件