Декодировать URL в SQL Server
Функция URL-кодирования в T-SQL: разбор и примеры
Смотрите, коллеги, часто приходится работать с URL в SQL Server. И встроенной функции urlEncode у нас, увы, нет. Приходится писать свою. Вот как выглядит типовое решение — функция, которая преобразует строку в URL-безопасный формат.
Код сам по себе рабочий, но давайте разберем его по косточкам. А то мало ли — захотите адаптировать под свои нужды.
Как это работает
- Проходим по каждому символу — цикл
WHILEот первого до последнего. - Проверяем «безопасность» — если символ входит в разрешенный набор (
A-Z,a-z,0-9и спецсимволы()'*\-._!~), то оставляем как есть. - Кодируем остальное — все, что не попало в белый список, превращаем в
%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)
Как получить текущего юзера БД
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта