SQL Server следует спецификации ANSI / ISO SQL-92 (Раздел 8.2, Общие правила № 3), как сравнивать строки с пробелами. Стандарт ANSI требует заполнения для строк символов, используемых в сравнениях, чтобы их длина соответствовала перед сравнением. Заполнение напрямую влияет на семантику предикатов предложения WHERE и HAVING и другие сравнения строк Transact-SQL. Например, Transact-SQL считает, что строки 'abc' и 'abc' эквивалентны для большинства операций сравнения.
Единственным исключением из этого правила является предикат LIKE. Когда правая часть выражения предиката LIKE содержит значение с завершающим пробелом, SQL Server не дополняет два значения одинаковой длиной до того, как произойдет сравнение. Поскольку цель предиката LIKE по определению состоит в том, чтобы облегчить поиск по шаблону, а не в простых тестах на равенство строк, это не нарушает упомянутый ранее раздел спецификации ANSI SQL-92.
Вот хорошо известный пример всех случаев, упомянутых выше:
\nне имеет значения в SQL Server. Это не интерпретируется как новая строка. Это не ответ на вопрос, заданный в любом случае.
Мартин Смит
@MartinSmith, но написано в MSDN: «Если в вашей строке должны быть конечные пробелы, вам следует добавить символ пробела в конце, чтобы SQL Server не обрезал строку».
Вы можете просто добавить пробел к вашему состоянию.
Конечные пробелы в строковых функциях
источник
\n
не имеет значения в SQL Server. Это не интерпретируется как новая строка. Это не ответ на вопрос, заданный в любом случае.