Функции Transact-SQL для работы со строками и данными типа даты/времениФункции работы со строками в MS SQL SERVERФункции STR, SPACE, LTRIM и RTRIM стр. 2 |
|||||||||||||||||||||||||||||||||||||||||||||
Для усечения концевых пробелов в SQL Server изначально имелось две функции - LTRIM и RTRIM - для усечения пробелов слева и справа соответственно. Чтобы удалить пробелы с обеих сторон строки, последовательно применялись обе функции (в примере для наглядности используется функция DATALENGTH , возвращающая число символов с учетом пробелов):
Начиная с версии SQL Server 2017, к ним добавилась новая функция - TRIM, которая выполняет усечение с обеих сторон строки-аргумента:
Кроме того, функция TRIM приобрела дополнительный функционал - возможность усекать произвольные концевые символы. При этом усекаемые символы можно задавать списком, перечисляя их в произвольном порядке. Усекаться (с обеих сторон) будут все входящие в список символы, пока не появится "посторонний", т.е. не входящий в список. Лучше всего продемонстрировать сказанное на примере.
Конечно, это еще не стандартное поведение, но уже близко. А вот что говорит стандарт относительно функции TRIM: < trim function> ::= TRIM < left paren> < trim operands> < right paren> < trim operands> ::= [ [ < trim specification> ] [ < trim character> ] FROM ] < trim source> < trim source> ::= < character value expression> < trim specification> ::= LEADING | TRAILING | BOTH < trim character> ::= < character value expression> MySQLВ MySQL используется стандартный синтаксис функции TRIM. При этом, в отличие от SQL Server, удаляется указанная подстрока, а не все символы из списка:
PostgreSQLPostgreSQL сочетает поведение MySQL и SQL Server, т.е. удаляются все символы из списка:
OracleOracle допускает усечение только одного символа, а не подстроки или символов из списка:
|