【问题标题】:Find substring in column在列中查找子字符串
【发布时间】:2014-08-28 23:09:00
【问题描述】:

我有一个模型mer20,其中包含作为字符串的数字列表(称为前导和滞后),由| 分隔。例如

235833|1457541|2244166|2824350|3219744|3343546

我要做的是构建一个查询,以便我可以获取与单个数字精确匹配的记录。

我试过了:

mer = where("leading like ? OR lagging like ?", "%#{query}%", "%#{query}%")

但它也获取带有查询的对象作为子字符串,这是我不想要的!

此外,我将如何检查这些数字中的任何一个是否在另外两个(a,b)之间?

最终解决方案:

mer = where("leading = ? OR lagging = ? OR leading like ? OR lagging like ? OR leading like ? OR lagging like ? OR leading like ? OR lagging like ?", query.to_i, query.to_i, "#{query}|%", "#{query}|%", "|#{query}|", "|#{query}|", "%|#{query}", "%|#{query}")

【问题讨论】:

    标签: ruby-on-rails activerecord where


    【解决方案1】:

    包括它必须从字符串的开头开始(即没有%开头)或以|开头......同样它必须在字符串的末尾结束(即没有% 结尾)或以 | 结尾

    【讨论】:

    • 你能举个例子吗?我想我不应该在这种情况下使用like
    • 抱歉 - 示例留给读者练习 ;) 试一试...是的,你应该使用 like,但你也应该使用 or
    • 我得到了this,但我遇到了和以前一样的问题,如果我在搜索中输入1,我会在数字中找到所有带有1 的对象!你能看出我做错了什么吗?
    • 是的......你仍然有"%{query}%"作为一个选项......你不应该有。请记住:1) 要么以字符串开头(即没有前导 %)或以 | 开头)2)要么以字符串结尾(即在end) 或以| 结尾
    猜你喜欢
    • 2012-05-16
    • 2011-04-10
    • 2023-04-03
    • 2018-09-27
    • 1970-01-01
    • 2021-04-21
    • 2011-07-13
    相关资源
    最近更新 更多