代码之家  ›  专栏  ›  技术社区  ›  Abhradip

关于只获取那些字段值只包含rails中某个特定字符的一次出现的记录的问题

  •  -2
  • Abhradip  · 技术社区  · 6 年前

    例如,如果表中有两行的名称是“a.b”和“a.b.c”,那么我的查询应该只返回名为“a.b”的行。

    请帮我解决这个问题。

    2 回复  |  直到 6 年前
        1
  •  3
  •   kurkle    6 年前

    例如,可以删除点并比较长度。

    SELECT * FROM table WHERE (char_length(name) - char_length(replace(name, '.', '')))=1
    

    但这不是很有效,因为索引不能被利用。

    dbfiddle

        2
  •  1
  •   Rémy Baron    6 年前

    用regexp?你可以试试这个:

    select * from "table" where "name" ~ '^[^\.]*\.[^\.]*$'