RTRIM: примеры (SQL)
RTRIM(character_expression): stringОписание функции RTRIM
Функция RTRIM в MS SQL Server предназначена для удаления пробельных символов в конце строки. Она используется при обработке текстовых данных, когда необходимо очистить строки от лишних пробелов справа, что часто требуется после импорта данных или объединения строк.
Синтаксис функции может принимать две формы:
- RTRIM(character_expression) — удаляет пробелы (символ CHAR(32)) в конце строки.
- RTRIM(character_expression, characters) — удаляет указанные символы в конце строки. Этот вариант доступен начиная с SQL Server 2022 (16.x).
Параметры:
- character_expression — выражение символьного или двоичного типа данных. Может быть константой, переменной или столбцом.
- characters (необязательный) — строковый литерал, указывающий символы для удаления. Например, '., ' удалит точки, запятые и пробелы.
Возвращаемое значение: Функция возвращает строку того же типа, что и входной аргумент, но без указанных правых символов. Если входное значение NULL, функция возвращает NULL.
Краткие примеры использования
Пример с удалением пробелов:
SELECT RTRIM('Пример строки ') AS Result;Result -------------- Пример строки
Пример с указанием удаляемых символов (SQL Server 2022+):
SELECT RTRIM('Пример строки....', '.') AS Result;Result -------------- Пример строки
Удаление нескольких символов:
SELECT RTRIM('Пример строки,.,', ',.') AS Result;Result -------------- Пример строки
Похожие функции в MS SQL
- LTRIM — удаляет пробелы или указанные символы слева от строки. Используется совместно с RTRIM для полной очистки.
- TRIM — удаляет пробелы или указанные символы с обоих концов строки. Предпочтительнее использовать вместо комбинации LTRIM и RTRIM для упрощения кода.
- REPLACE — заменяет все вхождения подстроки. Подходит для удаления символов внутри строки, а не только по краям.
Функцию TRIM рекомендуется использовать в новых версиях SQL Server для улучшенной читаемости кода.
Типичные ошибки
Использование функции с неявным преобразованием типа данных, что может привести к ошибкам или потере данных.
DECLARE @value INT = 123;
SELECT RTRIM(@value);Сообщение 8116, уровень 16, состояние 1 Аргумент 1 для функции rtrim имеет неверный тип данных.
Использование второго аргумента в версиях SQL Server ниже 2022 приводит к ошибке.
SELECT RTRIM('Текст.', '.');Сообщение 174, уровень 15, состояние 1 Функция rtrim имеет неверное количество аргументов.
Ожидание удаления всех указанных символов как набора, а не последовательности.
SELECT RTRIM('Текст...', '.,');Текст...
Функция удаляет символы '.,' как последовательность, а не каждый символ по отдельности.
Изменения в последних версиях
Начиная с SQL Server 2022 (16.x) функция RTRIM поддерживает второй необязательный аргумент characters. Это позволяет удалять не только пробелы, но и другие указанные символы справа от строки. В более ранних версиях функция принимала только один аргумент и удаляла исключительно пробелы.
Расширенные примеры применения
Очистка данных столбца таблицы:
UPDATE Products
SET Name = RTRIM(Name)
WHERE Name LIKE '% ';Комбинирование с другими строковыми функциями:
SELECT RTRIM(LEFT(Description, 20)) + '...' AS ShortDescription
FROM Articles;Использование в вычисляемом столбце:
ALTER TABLE Users
ADD CleanUserName AS RTRIM(UserName);Удаление нескольких символов в новой версии SQL Server:
SELECT RTRIM(RTRIM('Текст!!!??', '?'), '!') AS Result;Result ------- Текст
Функция не удаляет символы табуляции или перевода строки, для этого требуется дополнительная обработка:
SELECT RTRIM(REPLACE(ColumnName, CHAR(9), '')) FROM Table;Обработка NULL значений:
SELECT RTRIM(NULL) AS Result;
SELECT RTRIM('Текст ') + ISNULL(RTRIM(NULL), '') AS Concatenated;Result ------- NULL Concatenated ------------- Текст
Аналоги функции в других СУБД
MySQL: Используется RTRIM, синтаксис аналогичен, но второй аргумент для указания символов не поддерживается. Пример:
SELECT RTRIM('Текст ');'Текст'
PostgreSQL: Функция RTRIM существует, также доступен вариант с указанием удаляемых символов. Пример:
SELECT RTRIM('Текст...', '.');'Текст'
Oracle: RTRIM работает аналогично, но синтаксис отличается. Пример:
SELECT RTRIM('Текст ', ' ') FROM dual;'Текст'
В отличие от MS SQL, в Oracle и PostgreSQL второй параметр всегда обязателен.