Middle
35
SQL-vraag: hoe haal je gebruikers met namen in Cyrillisch en Latijn, gesorteerd zodat Cyrillisch eerst komt, en binnen de groepen lexicografisch?
Bedrijven waar gevraagd werd
Antwoord van AI
sobes.tech AI
Чтобы извлечь пользователей с именами на кириллице и латинице, отсортировав так, чтобы сначала шла кириллица, а внутри групп — лексикографически, можно использовать SQL с проверкой диапазона символов Unicode.
Пример для PostgreSQL:
SELECT username
FROM users
ORDER BY
CASE
WHEN username ~ '^[\u0400-\u04FF]' THEN 0 -- кириллица
ELSE 1 -- латиница и другие
END,
username;
Объяснение:
- Регулярное выражение
^[\u0400-\u04FF]проверяет, начинается ли имя с символа из диапазона кириллицы. - В
ORDER BYсначала сортируем по этому условию (0 — кириллица, 1 — остальные), затем по самому имени лексикографически.
Если СУБД не поддерживает Unicode в регулярках, можно использовать функцию для проверки первого символа по коду, например:
ORDER BY
CASE
WHEN ascii(substring(username from 1 for 1)) BETWEEN 192 AND 255 THEN 0
ELSE 1
END,
username
Но это менее универсально и зависит от кодировки.