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

Issue regarding fetching only those records where field value contains only one occurrence of a particular character in rails

我需要编写一个 rails 活动记录 where 子句,我必须在其中获取名称(名称是我的 table 中的一列)仅包含一次字符 '. '

例如,如果 table 中有两行名称为 "a.b" 和 "a.b.c",那么我的查询应该 return 名称为 [=] 的行19=] 仅。

请帮我解决这个问题。

提前致谢!

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

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

虽然这不是很有效,因为无法利用索引。 为了使事情更顺利,您可以将点数(深度?)存储在其自己的列中,并基于该索引和查询。这可以在 insert/update 触发器或应用程序层中完成,只要适合您的情况即可。

dbfiddle

用正则表达式?你可以试试这个:

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