Digamos que tengo una tabla que tiene un campo varchar. Si hago una inserción como esta:¿Hay algún inconveniente en poner N en frente de las cadenas en las secuencias de comandos? ¿Se considera una "mejor práctica"?
INSERT MyTable
SELECT N'the string goes here'
¿Hay alguna diferencia fundamental entre eso y:
INSERT MyTable
SELECT 'the string goes here'
Mi entendimiento es que usted sólo tiene un problema si la cadena contiene un carácter Unicode y la columna de destino no era unicode Aparte de eso, SQL lo trata bien y convierte la cadena con el N''
en un campo varchar (ignora básicamente el N
).
Tenía la impresión de que N
frente a las cadenas era una buena práctica, pero no puedo encontrar ninguna discusión que considere definitiva.
Ah, a la defensiva, me gusta ese término aquí. +1 – jcollum
Creo que esto, combinado con el de arriba es la respuesta. Creo que editaré esto y lo llamaré la respuesta. – jcollum
@jcollum: No se trata solo del rendimiento de una conversión. Está indicando la semántica incorrecta para los futuros mantenedores. Es un poco como escribir predicados como 'WHERE SomeCol = '1'', como si fuera una columna' varchar', cuando en realidad es una columna 'int'. Puede funcionar, pero eso no lo hace menos incorrecto, y puede conducir a sutiles errores relacionados con la intercalación en el futuro a medida que se cambia el guión. El código generado obviamente no está sujeto a un estándar de calidad tan alto como el código escrito; lo mismo es generalmente cierto para cualquier gen de código, intente ver el código de diseñador detrás de Windows Form. – Aaronaught