База данных - в чем разница между 3 и N'3 'в TSQL (Sql Server 2008) - PullRequest
0 голосов
/ 15 августа 2011

Предполагая, что ProductId является столбцом INT, в чем разница между записью 3 и N'3 '?

Они оба работают нормально.

INSERT INTO dbo.Products (ProductId, Name) VALUES (3,'Product3')

INSERT INTO dbo.Products (ProductId, Name) VALUES (N'3','Product3')

Ответы [ 2 ]

9 голосов
/ 15 августа 2011

N'3' - это тип nvarchar, где 3 - это int. Если вы используете nvarchar, вы запрашиваете парсер выполнить неявное преобразование. В этом случае он работает нормально, но в других вы можете столкнуться с проблемами приведения.

2 голосов
/ 15 августа 2011

Когда SQL Server обнаруживает N'', он будет обрабатывать строку как NVARCHAR вместо VARCHAR.NVARCHAR поля имеют юникод.

Причина, по которой N'3' по-прежнему работает для вас, заключается в том, что он преобразует его в NVARCHAR, а затем выполняет неявное преобразование в INT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...