Sobes.tech
Middle
46

SQL sorusu: Kiril ve Latin harfleriyle isimleri olan kullanıcıları nasıl çıkarırız, önce Kiril, sonra gruplar içinde sözlük sırasına göre sıralayarak?

Sorulan şirketler
СБЕРСБЕР

AI'dan gelen yanıt

sobes.tech yapay zeka

Чтобы извлечь пользователей с именами на кириллице и латинице, отсортировав так, чтобы сначала шла кириллица, а внутри групп — лексикографически, можно использовать 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

Но это менее универсально и зависит от кодировки.