2013-11-25 2 views
0

Моя строка содержит ведущие и конечные пробелы (см. Ниже).tsql LTRIM и LEN с ведущими и конечными пробелами

Когда я применил функцию LRTIM, она работает. Затем, когда я устанавливаю LTRIM-функцию с помощью функции LEN в строку, она кажется, что длина отключена на 1 (т. Е. Длина исходной строки равна 16, LTRIM удалил одно (1) ведущее пространство из строки, поэтому я ожидал LEN чтобы вернуть длину 15, а не 14). Любые объяснения?

SELECT 
' This is a test ' AS origStr 
,LEN(' This is a test ') AS origStrLen 
,'[' + LTRIM(' This is a test ') + ']' AS ltrimStr 
,LEN(LTRIM(' This is a test ')) AS strLtrimLen 
; 

Результаты:

This is a test | 16 | [This is a test ] | 14 | 
+0

Извините за повторное вывешено этого конкретного вопроса. И спасибо за предоставление ссылки, которая объясняет эту проблему. Я читал о DATALENGTH vs LEN. – user3033344

ответ

0

Это происходит потому, что Len() не считая после строки пространства.

LEN(LTRIM(' This is a test ')) has one space before and one space after string. 

Пример: SELECT LEN('TEXT ') ВОЗВРАТ ---> 4

Смежные вопросы