Qual é o significado do prefixo N nas declarações T-SQL?

vi o prefixo N em algumas consultas de inserção T-SQL. Muitas pessoas usaram N Antes de inserir o valor em uma tabela.

procurei, mas não consegui entender qual é o propósito de incluir o N Antes de inserir quaisquer cordas na mesa.

 INSERT INTO Personnel.Employees
 VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
Author: Peter Mortensen, 2012-04-05

3 answers

Está a declarar o texto como {[[0]} Tipo de dados, em vez de varchar

Você pode ter visto o código Transact-SQL que passa cadeias de caracteres usando um n prefixo. Isto denota que a cadeia subsequente está em Unicode (O N representa o conjunto de caracteres da língua nacional). Que significa que estás a passar por um valor NCHAR, NVARCHAR ou NTEXT, como ao contrário de CHAR, VARCHAR ou texto.

Para citar da Microsoft:

Prefixo Unicode constantes de cadeia de caracteres com a letra N. sem o prefixo N, o texto é convertido para a página de código predefinida do banco. Esta página de código por omissão pode não reconhecer certos caracteres .


Se quiser saber a diferença entre estes dois tipos de dados, veja isto assim post:

Qual é a diferença entre varchar e nvarchar?

 332
Author: Curt, 2017-05-23 12:10:45
Deixa-me dizer-te que aconteceu uma coisa irritante com o prefixo" n". e não consegui arranjar dois dias.

A minha recolha db é Sql_latin1_geral_cp1_ci_as .

Há uma mesa. coluna MyCol1 is Nvarcar

Mas esta consulta não corresponde ao valor exacto que existe.

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = 'ESKİ'  

// 0 result

Se usar o prefixo N", corrige-o

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = N'ESKİ'  

// 1 result - found!!!!
Porquê? porque o latin1_general não tem grandes pontilhados i é por isso que falha i supor.
 10
Author: blackholeearth0_gmail, 2017-10-24 09:54:35

Assumindo que o valor é tipo nvarcar para que só estamos a usar N "

 4
Author: RickyRam, 2014-09-19 11:31:31