Eu vi o prefixo N em algumas consultas T-SQL de inserção. Muitas pessoas já usaram N
antes de inserir o valor em uma tabela.
Eu procurei, mas não consegui entender qual é o objetivo de incluir o N
antes de inserir qualquer sequência na tabela.
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
Para que finalidade esse prefixo 'N' serve e quando deve ser usado?
fonte
N
apenas quando estou usando os seguintes tipos de dadosCHAR, VARCHAR or TEXT
? porque `NCHAR, NVARCHAR ou NTEXT` são inerentemente UNICODE de armazenamento, não preciso adicioná-lo separadamente .... isso é verdade?databases aspfaq com
redirecionamentos a sites extremamente duvidosos (fkref com
,za1 zeroredirect1 com
,i0z13 trackvoluum com
), que têm sido marcados por nosso firewall corporativo como pornografia, sites maliciosos e URLs de spam. Entrei em contato com o proprietário do aspfaq.com e editei a resposta para remover o link.Deixe-me dizer uma coisa irritante que aconteceu com o
N'
prefixo - não consegui consertá-lo por dois dias.Meu agrupamento de banco de dados é SQL_Latin1_General_CP1_CI_AS .
Possui uma tabela com uma coluna chamada MyCol1 . É um Nvarchar
Esta consulta falha ao corresponder ao valor exato que existe.
usando o prefixo N '' corrige
Por quê? Porque latin1_general não tem grandes pontilhadas © é por isso que falho, suponho.
fonte
1. Desempenho:
Suponha que sua cláusula where seja assim:
Se a coluna NAME for de outro tipo que não nvarchar ou nchar, você não deverá especificar o prefixo N. No entanto, se a coluna NAME for do tipo nvarchar ou nchar, se você não especificar o prefixo N, 'JON' será tratado como não unicode. Isso significa que o tipo de dados da coluna NAME e a sequência 'JON' são diferentes e, portanto, o SQL Server converte implicitamente o tipo de um operando no outro. Se o SQL Server converter o tipo do literal no tipo da coluna, não haverá problema, mas se fizer o contrário, o desempenho será prejudicado porque o índice da coluna (se disponível) não será usado.
2. Conjunto de caracteres:
Se a coluna for do tipo nvarchar ou nchar, sempre use o prefixo N ao especificar a cadeia de caracteres na cláusula WHERE criterios / UPDATE / INSERT. Se você não fizer isso e um dos caracteres da sua string for unicode (como caracteres internacionais - exemplo - ā), ele falhará ou sofrerá corrupção de dados.
fonte
Supondo que o valor seja do tipo nvarchar, somente para isso estamos usando N ''
fonte