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

Eu vi o prefixo N em algumas consultas T-SQL inseridas. Muitas pessoas usaram N antes de inserir o valor em uma tabela.

Eu procurei, mas não consegui entender qual era o propósito de include o N antes de inserir qualquer sequência na tabela.

  INSERT INTO Personnel.Employees VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1), 

Ele está declarando a string como tipo de dados nvarchar , em vez de varchar

Você pode ter visto o código Transact-SQL que passa seqüências de caracteres usando um prefixo N. Isso denota que a seqüência subsequente está em Unicode (o N, na verdade, significa Conjunto de Caracteres de Idioma Nacional). O que significa que você está passando um valor NCHAR, NVARCHAR ou NTEXT, ao contrário de CHAR, VARCHAR ou TEXT.

Para citar da Microsoft :

Prefixo as constantes da cadeia de caracteres Unicode com a letra N. Sem o prefixo N, a cadeia é convertida na página de códigos padrão do database. Esta página de códigos padrão pode não reconhecer determinados caracteres .


Se você quiser saber a diferença entre esses dois tipos de dados, consulte esta postagem do SO:

Qual é a diferença entre varchar e nvarchar?

Deixe-me dizer-lhe o que uma coisa chata aconteceu com o prefixo N ”. e eu não consegui consertar 2 dias.

Meu agrupamento de db é SQL_Latin1_General_CP1_CI_AS .

existe uma mesa. coluna MyCol1 é Nvarchar

mas essa consulta não corresponde ao valor exato que existe.

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

usando o prefixo N ” corrige

 SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = N'ESKİ' // 1 result - found!!!! 

porque? porque latin1_general não tem grande pontilhado, é por isso que não, suponho.

Assumindo que o valor é do tipo nvarchar para que só nós estamos usando N ”