Sobes.tech
Middle
37

SQL-Aufgabe: Wie extrahiert man Benutzer mit Namen in Kyrillisch und Latein, sortiert so, dass Kyrillisch zuerst kommt, und innerhalb der Gruppen lexikografisch?

Unternehmen wurden gefragt
СБЕРСБЕР

Antwort von AI

sobes.tech KI

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

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