Функции для работы с URL-адресами
Обзор
Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и в большинстве случаев не следуют стандарту RFC-3986.
Функции, реализующие RFC-3986, имеют суффикс RFC в имени функции и, как правило, работают медленнее.
Как правило, можно использовать варианты функций без суффикса RFC при работе с публично зарегистрированными доменами, которые не содержат пользовательских данных и символов @.
В таблице ниже показано, какие символы в URL могут (✔) или не могут (✗) быть разобраны соответствующими вариантами RFC и non-RFC:
| Symbol | non-RFC | RFC | |
|---|---|---|---|
| ' ' | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| ✗ | ✗ | ||
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* |
Символы, помеченные *, являются субделимитерами в RFC 3986 и допускаются для пользовательской информации, следующей за символом @.
Существует два типа функций для работы с URL:
- Функции, извлекающие части URL. Если соответствующая часть отсутствует в URL, возвращается пустая строка.
- Функции, удаляющие часть URL. Если соответствующая часть в URL отсутствует, URL остаётся неизменным.
Приведённые ниже функции генерируются из системной таблицы system.functions.