He visto el prefijo N en algunas consultas de inserción de T-SQL. Muchas personas lo han usado 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 se debe usar?
fuente
N
solo cuando estoy usando los siguientes tipos de datosCHAR, VARCHAR or TEXT
?? porque `NCHAR, NVARCHAR o NTEXT` son inherentemente almacenar UNICODE, no necesito agregarlo por separado ... ¿es cierto?databases aspfaq com
redirecciones a sitios web muy dudosas (fkref com
,za1 zeroredirect1 com
,i0z13 trackvoluum com
), que han sido marcados por nuestro firewall de la empresa como la pornografía, sitios maliciosos y URLs de spam. Me puse en contacto con el propietario de aspfaq.com y edité la respuesta para eliminar el enlace.Déjame decirte una cosa molesta que sucedió con el
N'
prefijo: no pude arreglarlo 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.
usando el prefijo N '' lo arregla
¿Por qué? Porque latin1_general no tiene puntos grandes , por eso falla, supongo.
fuente
1. Rendimiento:
Suponga que su cláusula where es así:
Si la columna NOMBRE es de cualquier tipo que no sea nvarchar o nchar, entonces no debe especificar el prefijo N. Sin embargo, si la columna NOMBRE es de tipo nvarchar o nchar, entonces si no especifica el prefijo N, entonces 'JON' se trata como no unicode. Esto significa que el tipo de datos de la columna NAME y la cadena 'JON' son diferentes y, por lo tanto, SQL Server convierte implícitamente el tipo de un operando al otro. Si el SQL Server convierte el tipo de literal al tipo de columna, entonces no hay problema, pero si lo hace de otra manera, el rendimiento se verá afectado porque el índice de la columna (si está disponible) no se usará.
2. Conjunto de caracteres:
Si la columna es de tipo nvarchar o nchar, utilice siempre el prefijo N al especificar la cadena de caracteres en la cláusula WHERE criterios / ACTUALIZACIÓN / INSERTAR. Si no hace esto y uno de los caracteres en su cadena es unicode (como caracteres internacionales - ejemplo - ā), entonces fallará o sufrirá corrupción de datos.
fuente
Suponiendo que el valor es nvarchar type para eso solo estamos usando N ''
fuente