Мне нужно написать активную запись rails, где предложение, в котором я должен получить те строки, где имя (имя - столбец в моей таблице) содержит только одно вхождение символа '.'
Например, если в таблице есть две строки с именем «a.b» и «a.b.c», то мой запрос должен возвращать только строку с именем «a.b».
Пожалуйста, помогите мне решить эту проблему.
Заранее спасибо!





Вы можете, например, удалить точки и сравнить длину.
SELECT * FROM table WHERE (char_length(name) - char_length(replace(name, '.', '')))=1
Однако это не очень эффективно, потому что индексы нельзя использовать. Чтобы упростить работу, вы можете сохранить количество точек (глубину?) В отдельном столбце с индексом и запросом на его основе. Это можно сделать в триггере вставки / обновления или на уровне приложения, в зависимости от вашей ситуации.
с регулярным выражением? вы можете попробовать это:
select * from "table" where "name" ~ '^[^\.]*\.[^\.]*$'