Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Por qué 'N' en texto?

Estas en el tema de Por qué 'N' en texto? en el foro de SQL Server en Foros del Web. He encontrado varios ejemplos donde al principio de un texto ponen la letra N y luego comillas simples el texto(N'AquiTexto'). Por ejemplo en esta línea ...
  #1 (permalink)  
Antiguo 12/12/2012, 15:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 74
Antigüedad: 18 años, 7 meses
Puntos: 0
Por qué 'N' en texto?

He encontrado varios ejemplos donde al principio de un texto ponen la letra N y luego comillas simples el texto(N'AquiTexto').

Por ejemplo en esta línea de código lo usan:
----
declare @a varchar(128)
set @a=N'asdf'
print @a
----

De lo que pude investigar en MSDN encontré esto:

Cuando se hace referencia a los tipos de datos de caracteres Unicode nchar, nvarchar y ntext, debe agregarse como prefijo la letra mayúscula 'N' a 'expression'. Si no se especifica 'N', SQL Server convierte la cadena en la página de códigos correspondiente a la intercalación predeterminada de la base de datos o la columna. Los caracteres que no se encuentren en esta página de códigos se perderán.

Fuente: http://msdn.microsoft.com/es-es/library/ms174335.aspx

Exactamente lo que está en negrita es lo que no entiendo alguien me podría ayudar?

Saludos y muchas gracias.

Última edición por sirguille; 12/12/2012 a las 16:13
  #2 (permalink)  
Antiguo 13/12/2012, 00:01
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Por qué 'N' en texto?

La configuración de tu sistema te habilita probablemente almacenar cadenas del tipo Varchar con las letras tipicas a castellano (á ñ etc.), pero no letras en ruso o chino.
Para que el sistema pueda almacenar cadenas de todas las lenguas se utiliza el NVarchar.
Para indicar al sistema que una cadena es NVarchar (y no Varchar) debes añadir el prefijo N.
Tu ejemplo no es bueno porque el parámetro es varchar y no NVarchar.

Proba el siguiente código que contiene una letra en ruso (И es el vocal I) y una en castellano:
Código SQL:
Ver original
  1. DECLARE @V VARCHAR(128),
  2.         @NV NVarchar(128);
  3.  
  4. SELECT  @V='ИÑ',
  5.         @NV='ИÑ';
  6. Print   @V;
  7. Print   @NV;
  8.  
  9. SELECT  @V=N'ИÑ',
  10.         @NV=N'ИÑ';
  11. Print   @V;
  12. Print   @NV;
Probablemente todas apoyan la Ñ,
pero solamente el parámetro NVarchar con el prefijo N apoyan la И.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Última edición por GeriReshef; 13/12/2012 a las 00:14
  #3 (permalink)  
Antiguo 13/12/2012, 09:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 74
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Por qué 'N' en texto?

Cita:
Iniciado por GeriReshef Ver Mensaje
La configuración de tu sistema te habilita probablemente almacenar cadenas del tipo Varchar con las letras tipicas a castellano (á ñ etc.), pero no letras en ruso o chino.
Para que el sistema pueda almacenar cadenas de todas las lenguas se utiliza el NVarchar.
Para indicar al sistema que una cadena es NVarchar (y no Varchar) debes añadir el prefijo N.
Tu ejemplo no es bueno porque el parámetro es varchar y no NVarchar.

Proba el siguiente código que contiene una letra en ruso (И es el vocal I) y una en castellano:
Código SQL:
Ver original
  1. DECLARE @V VARCHAR(128),
  2.         @NV NVarchar(128);
  3.  
  4. SELECT  @V='ИÑ',
  5.         @NV='ИÑ';
  6. Print   @V;
  7. Print   @NV;
  8.  
  9. SELECT  @V=N'ИÑ',
  10.         @NV=N'ИÑ';
  11. Print   @V;
  12. Print   @NV;
Probablemente todas apoyan la Ñ,
pero solamente el parámetro NVarchar con el prefijo N apoyan la И.
Muchas gracias, ha estado claro.

Etiquetas: server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:59.