¿Cuál es el significado del prefijo N en las declaraciones T-SQL y cuándo debo usarlo?
He visto el prefijo N en algunas consultas de inserción T-SQL. Mucha gente lo ha utilizado N
antes de insertar el valor en una tabla.
Busqué, pero no pude entender cuál es el propósito de incluir N
antes de insertar cadenas en la tabla.
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
¿Para qué sirve este prefijo 'N' y cuándo debe usarse?
Está declarando la cadena como nvarchar
tipo de datos, en lugar devarchar
Es posible que haya visto código Transact-SQL que pasa cadenas usando un prefijo N. Esto indica que la cadena siguiente está en Unicode (la N en realidad significa conjunto de caracteres del idioma nacional). Lo que significa que estás pasando un valor NCHAR, NVARCHAR o NTEXT, a diferencia de CHAR, VARCHAR o TEXT.
Para citar de Microsoft :
Prefije las constantes de cadena de caracteres Unicode con la letra N. Sin el prefijo N, la cadena se convierte a la página de códigos predeterminada de la base de datos. Es posible que esta página de códigos predeterminada no reconozca ciertos caracteres .
Si desea conocer la diferencia entre estos dos tipos de datos, consulte esta publicación SO:
¿Cuál es la diferencia entre varchar y nvarchar?
Déjame contarte algo molesto que sucedió con el N'
prefijo: no pude solucionarlo durante dos días.
La clasificación de mi base de datos es SQL_Latin1_General_CP1_CI_AS .
Tiene una tabla con una columna llamada MyCol1 . es un nvarchar
Esta consulta no coincide con el valor exacto que existe.
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = 'ESKİ'
// 0 result
usando el prefijo N'' lo soluciona
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = N'ESKİ'
// 1 result - found!!!!
¿Por qué? Debido a que latin1_general no tiene puntos grandes, supongo que por eso falla.