Декодировать URL в SQL Server

Время чтения - 1 мин.Дата публикации 13.04.2021 (обновлено 21.05.2026)

Функция URL-кодирования в T-SQL: разбор и примеры

Смотрите, коллеги, часто приходится работать с URL в SQL Server. И встроенной функции urlEncode у нас, увы, нет. Приходится писать свою. Вот как выглядит типовое решение — функция, которая преобразует строку в URL-безопасный формат.

Код сам по себе рабочий, но давайте разберем его по косточкам. А то мало ли — захотите адаптировать под свои нужды.

Как это работает

  1. Проходим по каждому символу — цикл WHILE от первого до последнего.
  2. Проверяем «безопасность» — если символ входит в разрешенный набор (A-Z, a-z, 0-9 и спецсимволы ()'*\-._!~), то оставляем как есть.
  3. Кодируем остальное — все, что не попало в белый список, превращаем в %XX (где XX — шестнадцатеричный код символа).

Примеры использования

Допустим, у вас есть:

  • SELECT dbo.as_urlEncode('Hello World!') — вернет Hello%20World%21 (пробел стал %20, восклицательный знак — %21).
  • SELECT dbo.as_urlEncode('C# & .NET') — вернет C%23%20%26%20.NET (решетка, пробелы и амперсанд закодированы).
  • SELECT dbo.as_urlEncode('http://example.com/query?name=value') — закодирует только служебные символы, например двоеточие и слеши останутся нетронутыми (они в белом списке).

Что стоит знать

  • Функция опирается на колляцию Latin1_General_BIN — это важно для корректного сравнения символов. Без нее могут быть сюрпризы с регистром.
  • Для длинных строк (больше 1024 символов) результат может обрезаться — возвращаемое значение ограничено 3072 символами. Имейте в виду.
  • Функция не обрабатывает суррогатные пары (например, эмодзи) — это legacy-код для ASCII-совместимых данных.

В целом — хороший boilerplate для своих проектов. Берете, адаптируете под свою кодировку и пользуетесь.

Насколько полезной была статья?

Что еще посмотреть по SQL Server

Как запустить SQL сценарий сразу на нескольких БД

Индексы SQL Server. Поиск дубликатов

Запрос для получения SQL всех индексов для таблиц базы данных SQL Server

Как перестроить все индексы на базе SQL Server

Как разрезать строку на части в SQL по некоторому символу

Конвертация из строки в таблицу в SQL Server

Выполнение прямого запроса к URL из SQL

SQL Server Как установить у таблицы описание (MS Description)

Как получить текущего юзера БД

Как хранить в 1 поле таблицы БД значения разных типов?

Генерация MD5 в SQL Server

Как привести телефон в нормализованный вид

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK