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),
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:
A minha recolha db é Sql_latin1_geral_cp1_ci_as .
Há uma mesa. coluna MyCol1 is NvarcarMas 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.
Assumindo que o valor é tipo nvarcar para que só estamos a usar N "