Я согласен с @Martin
Если вы используете LEN, чтобы прийти к выводу, что это пустая строка, а не пробел, то она не считает конечные пробелы, поэтому вернет ноль
когда вы поместите значение 'abc'
в поле / переменную типа CHAR(5)
, значение станет 'abc '
, но функция LEN
все равно будет "правильно" возвращать 3 в этом случае. но если вы используете DATALENGTH
вместо LEN, вы увидите, что длина его на самом деле составляет 5 символов. Если вы определили свою переменную с помощью VARCHAR(5)
, то использование LEN снова даст вам длину 0, однако DATALENGTH
даст вам 1
ПРИМЕЧАНИЕ: VARCHAR - это символ переменной длины
для вывода
@nett varchar(1) = '' => LEN = 0, DATALENGTH = 0
@nett varchar(1) = ' ' => LEN = 0, DATALENGTH = 1
@nett char(1) = '' => LEN = 0, DATALENGTH = 1
@nett char(1) = ' ' => LEN = 0, DATALENGTH = 1