Почему функция LEN () t-sql игнорирует завершающие пробелы? - PullRequest
6 голосов
/ 24 февраля 2012

Описание функции LEN () на MSDN : Возвращает количество символов указанного строкового выражения, , исключая завершающие пробелы .

Почему функция LEN () была разработана таким образом? Какую проблему решает это поведение?

Похожие:

Ответы [ 2 ]

6 голосов
/ 24 февраля 2012

Исправляет автоматическое заполнение строк из-за длины типа данных.Рассмотрим следующее:

DECLARE @Test CHAR(10), @Test2 CHAR(10)
SET @Test = 'test'
SET @Test2 = 'Test2'
SELECT  LEN(@Test), LEN(@Test + '_') - 1, LEN(@Test2), LEN(@Test2 + '_') - 1

Это вернет 4, 10, 5 и 10 соответственно.Даже если для @Test не использовались конечные пробелы, он по-прежнему сохраняет длину 10. Если LEN не обрезал конечные пробелы, то LEN(@test) и LEN(@Test2) будут одинаковыми.Чаще всего люди хотят знать длину значимых данных, а не длину автоматического заполнения, поэтому LEN удаляет конечные пробелы.Существуют обходные пути / альтернативы, где это не является обязательным поведением.

0 голосов
/ 24 февраля 2012

пробел в неизменяемых полях, таких как

CREATE TABLE tblSomething ( variable_length varchar(20), non_var_lenght char(10) ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...