Длина подсчета международного имени домена, выбрасываемого SQL (PostgreSQL)

У меня есть несколько доменных имен, сохраненных в базе данных в формате idn ("xn--"). Я хочу выполнить некоторые статистические запросы, но у меня проблема с подсчетом символов в этих доменных именах

SELECT
    dom_name,
    char_length(dom_name) as raw_length, -- counted with zone extension for now
FROM
    my_domains_table;

Конечно, у меня есть ошибка по поводу доменов "xn--", и я хотел получить счетчик из sql (без дальнейшего использования php или какого-либо другого языка).

Или, пожалуйста, дайте мне несколько советов, как сделать это лучше.

- Во-первых, было бы здорово сохранить доменные имена в таблицу в UTF-8, но сейчас это не вариант:)

1 ответ

Решение

Если вы можете установить ненадежные языки в вашу базу данных, как PL/PerlU или же PL/PythonUтогда вы можете создать punycode_decode использовать функцию Net::IDN::Encode модуль Perl или decode('idna') Функция-член класса строки Python.

Если вы этого не сделаете, то вам нужно будет реализовать это с помощью pl/pgsql, что будет непросто.

Другие вопросы по тегам