Как SQL Server обрабатывает пробелы в подстроке / СЛЕВА?

#sql-server #string

#sql-сервер #строка #sql-server

Вопрос:

Как SQL Server обрабатывает пробелы в подстроке / СЛЕВА?

Если в подстроке / левом обрезе есть ПРОБЕЛ where, я получаю другое значение, чем если бы там был текст. Есть ли документация для этого?

 DECLARE @st_Spaces char(25)
DECLARE @st_NoSpaces char(25)

SET @st_Spaces = '123 56'  --One space, pos 4
SET @st_NoSpaces = REPLACE(@st_Spaces, ' ', '4') --Replace space w/ 4


SELECT LEN(LEFT(@st_Spaces, 4)), --Returns 3
LEN(LEFT(@st_NoSpaces,4)) --Returns 4
  

Ответ №1:

Это прямо там, в документации для LEN .

Возвращает количество символов указанного строкового выражения, исключая конечные пробелы. (курсив добавлен)

Ответ №2:

LEN() исключает конечные пробелы, из-за которых вы получаете разные значения длины.

Ответ №3:

LEN(...) не учитывает завершающие пробелы. Вы можете проверить это, выполнив:

 SELECT LEN('    '); -- returns 0
SELECT LEN('A   '); -- returns 1
SELECT LEN('  A '); -- returns 3