Зачем SqlServer выберите Оператор выберите строки , которые соответствуют и строк , которые соответствуют и конечных пробелов

у меня есть таблицы, созданные с:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TestFeature1](
[Id] [nvarchar](50) NOT NULL,
[Leng] [decimal](18, 0) NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

я вставил данных:

insert into TestFeature1 (id,leng) values ('1',100);
insert into TestFeature1 (id,leng) values ('1 ',1000);

Когда я выберите из таблицы, при этом:

select * from TestFeature1 where id='1';

это возвращает 2 строки

1   100
1   1000

почему бы это? почему это возвращение версия с места на конец даже когда запрос указывает, что значение имеет лишь 1 по себе, без пробела?

Найдено 4 ответа:

Why would SqlServer select statement select rows which match and rows which match and have trailing spaces

http://stackoverflow.com/questions/1143313/why-would-sqlserver-select-statement-select-rows-which-match-and-rows-which-matc

Посмотреть решение →

Яндекс.Метрика