Saltar al contenido

¿Cuál es el significado del prefijo N en las declaraciones de T-SQL y cuándo debo usarlo?

Solución:

Está declarando la cadena como nvarchar tipo de datos, en lugar de varchar

Es posible que haya visto código Transact-SQL que pasa cadenas usando un prefijo N. Esto denota que la siguiente cadena está en Unicode (la N en realidad significa juego de caracteres de idioma nacional). Lo que significa que está pasando un valor NCHAR, NVARCHAR o NTEXT, en lugar de CHAR, VARCHAR o TEXT.

Para citar a 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 de SO:

¿Cuál es la diferencia entre varchar y nvarchar?

Déjame contarte una cosa molesta que pasó con el N' prefijo: no pude arreglarlo durante dos días.

La intercalació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 Exact Valor que existe.

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

// 0 result

el uso del prefijo N ” lo corrige

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = N'ESKİ'  

// 1 result - found!!!!

¿Por qué? Porque latin1_general no tiene gran punteado İ por eso falla, supongo.

1. Rendimiento:

Suponga que su cláusula where es así:

WHERE NAME='JON'

Si la columna NAME es de cualquier tipo que no sea nvarchar o nchar, no debe especificar el prefijo N. Sin embargo, si la columna NAME es de tipo nvarchar o nchar, 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 en el otro. Si SQL Server convierte el tipo de literal al tipo de columna, entonces no hay problema, pero si lo hace al revés, el rendimiento se verá afectado porque no se utilizará el índice de la columna (si está disponible).

2. Juego de caracteres:

Si la columna es de tipo nvarchar o nchar, utilice siempre el prefijo N mientras especifica la cadena de caracteres en la cláusula WHERE criterios / UPDATE / INSERT. Si no hace esto y uno de los caracteres en su cadena es Unicode (como caracteres internacionales – ejemplo – ā) entonces fallará o sufrirá daños en los datos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *