@Nosezz

Как правильно сделать приписку со склонением слов в PostgreSQL?

Есть число которое варьируется от 0 до 600.
Требуется к каждому числу приписать слово "Автомобиль", но со склонением к каждому числу:
- 0 автомобилей
- 1 автомобиль
- 2 автомобиля и т.д
Т.к чисел гигантское кол-во, case сюда не подойдет. Какой-то опр. функции на просторах инета не нашел.
Помогите решить ситуацию люди добрые)
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT amount || ' ' ||
       CASE WHEN amount % 100 / 10 = 1 THEN 'автомобилей'
            WHEN amount % 10 = 1 THEN 'автомобиль'
            WHEN amount % 10 IN (2,3,4) THEN 'автомобиля'
            ELSE 'автомобилей'
            END
FROM generate_series(0,600) AS source (amount)

fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Если вы внимательно посмотрите на окончания, то поймёте, что они поддаются описанию довольно простым повторяющимся паттерном (особенно начиная со второго десятка).
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
если (n % 100 >= 10 && n % 100 <= 19) || n % 10 == 0 || n % 10 >= 5 то
  "автомобилей"
иначе если n % 10 == 1 то
  "автомобиль"
иначе
  "автомобиля"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы