我需要写一个rails active record where子句,我必须获取那些名称(name是我的表中的列)的行只包含一个字符'。'。
例如,如果表中有两行名称为“a.b”和“a.b.c”,那么我的查询应该只返回名称为“a.b”的行。
请帮我解决这个问题。
提前致谢!
例如,您可以删除点并比较长度。
SELECT * FROM table WHERE (char_length(name) - char_length(replace(name, '.', '')))=1
但这不是很有效,因为索引无法使用。为了使事情更顺畅,您可以使用索引和查询在其自己的列中存储点数(深度?)。这可以在插入/更新触发器或应用程序层中完成,适合您的情况。
用正则表达式?你可以试试这个:
select * from "table" where "name" ~ '^[^\.]*\.[^\.]*$'