Подтвердить что ты не робот

Что означает N 'в SQL script? (тот, который используется перед символами вставки script)

Я создал sql script, как это,

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) 
VALUES (1, N'Dave', N'ESD157', N'FD080', 7)

Интересно, что N 'точно означает и каково его назначение здесь.

ПРИМЕЧАНИЕ. При поиске ответа все, что я могу получить, это то, что N 'является префиксом для стандарта национального языка и его для использования данных Unicode. Но, честно говоря, я не могу получить четкое представление о точной работе N 'здесь. Буду признателен за вашу помощь и, пожалуйста, сделайте ее более понятным способом. Спасибо заранее.

4b9b3361

Ответ 1

N используется для указания строки юникода.

Здесь хорошее обсуждение http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html

В вашем примере N префикс не требуется, потому что символы ASCII (со значением менее 128) отображаются непосредственно в unicode. Однако, если вы хотите вставить имя, не являющееся ASCII, тогда потребуется префикс N.

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) 
VALUES (1, N'Wāhi', 'ESD157', 'FD080', 7)

Ответ 2

Префикс "N" обозначает национальный язык в стандарте SQL-92 и используется для представления символов Unicode.

Каждый раз, когда вы передаете данные Unicode на SQL Server, вы должны префикс строки Unicode N.

Используется, когда тип от NVARCHAR, NCHAR или NTEXT.

Для получения дополнительной информации обратитесь к следующему: Что происходит с N перед строковыми значениями?

Ответ 3

'abcd' является литералом для строки [var]char (или, возможно, text, но теперь varchar(max) будет более распространен) - занимая память в 4 байта и используя любую кодовую страницу, на которую настроен сервер SQL, N'abcd' является литералом для строки n[var]char (или, возможно, ntext, но предпочтительнее nvarchar(max)), занимая 8 байт памяти с использованием UTF-16. Это позволяет использовать полный международный доступ, и, откровенно говоря, n[var]char, вероятно, будет использоваться по умолчанию в большинстве систем.

Ответ 4

Это означает, что последующая строка находится в Unicode (на самом деле N обозначает набор символов национального языка).

Это означает, что вы передаете значение NCHAR, NVARCHAR или NTEXT, а не CHAR, VARCHAR или TEXT.

Ответ 5

N указывает, что это значение типа строки.

[N] 'tsql_string'

Является постоянной строкой. tsql_string может быть любым nvarchar или varchar данными тип. Если включен N, строка интерпретируется как nvarcharтип данных.

Ответ 6

каждая страна имеет свои собственные конкретные буквы и символы, поэтому база данных, созданная для английского языка США, не будет распознавать символ £, который будет иметь английская база данных Великобритании, то же самое касается испанского, французского, немецкого языков

Также другие языки, такие как китайский, японский, иврит, арабский, не используют латинских символов.

поэтому любой, кто пытается ввести какие-либо данные, не содержащиеся в локальном наборе символов, терпит неудачу или потерпит повреждение данных, если вы используете varchar, поэтому, если есть даже самая отдаленная вероятность того, что вашей базе данных потребуется поддержка более одного локального символа тогда вы должны использовать национализированный набор символов языка aka unicode aka NChar, который позволяет записывать наборы символов национальности с персонажем. предоставление международной текстовой поддержки

Аналогично, добавление префикса N в строку указывает базе данных на включение кода Nation, а также символьного кода