Я видел префикс N в некоторых запросах вставки T-SQL. Многие люди использовали N
перед тем, как вставить значение в таблицу.
Я искал, но не смог понять, для чего это нужно, N
прежде чем вставлять какие-либо строки в таблицу.
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
Какой цели служит этот префикс «N» и когда его следует использовать?
источник
N
только тогда, когда я использую следующие типы данныхCHAR, VARCHAR or TEXT
?? поскольку `NCHAR, NVARCHAR или NTEXT` по своей природе хранят UNICODE, мне не требуется добавлять его отдельно ... правда ли это?databases aspfaq com
переадресациями на крайне сомнительные сайты (fkref com
,za1 zeroredirect1 com
,i0z13 trackvoluum com
), которые были отмечены нашей корпоративной сетью , как порнография, вредоносные сайты и спама - адреса. Я связался с владельцем aspfaq.com и отредактировал ответ, чтобы удалить ссылку.Позвольте мне рассказать вам досадную вещь, которая произошла с
N'
префиксом - я не мог исправить это в течение двух дней.Моя сортировка базы данных - SQL_Latin1_General_CP1_CI_AS .
У него есть таблица со столбцом MyCol1 . Это нварчар
Этот запрос не соответствует точному значению, которое существует.
использование префикса N '' исправляет это
Почему? Потому что latin1_general не имеет большой точки , поэтому я думаю, что это не удается.
источник
1. Производительность:
Предположим, ваше предложение where выглядит следующим образом:
Если столбец NAME имеет любой тип, отличный от nvarchar или nchar, вам не следует указывать префикс N. Однако, если столбец NAME имеет тип nvarchar или nchar, то, если вы не укажете префикс N, то JON будет считаться не-юникодом. Это означает, что тип данных столбца NAME и строки «JON» различаются, и поэтому SQL Server неявно преобразует один тип операнда в другой. Если SQL Server преобразует тип литерала в тип столбца, проблем не возникает, но если это происходит иначе, производительность будет снижена, поскольку индекс столбца (если он доступен) не будет использоваться.
2. Набор символов:
Если столбец имеет тип nvarchar или nchar, всегда используйте префикс N при указании символьной строки в условии WHERE критериев / UPDATE / INSERT. Если вы этого не сделаете, и один из символов в вашей строке будет Unicode (например, международные символы - пример - А), то он потерпит неудачу или будет поврежден.
источник
Предполагая, что значение имеет тип nvarchar, для этого только мы используем N ''
источник