Diciamo che ho una tabella che ha un campo varchar. Se faccio un inserto in questo modo:c'è uno svantaggio nel mettere N davanti alle stringhe negli script? È considerata una "migliore pratica"?
INSERT MyTable
SELECT N'the string goes here'
C'è qualche differenza fondamentale tra questo e:
INSERT MyTable
SELECT 'the string goes here'
La mia comprensione è che devi avere un problema solo se la stringa contiene un carattere Unicode e la colonna di destinazione non era unicode. Oltre a ciò, SQL si occupa di esso e converte la stringa con lo N''
in un campo varchar (in pratica ignora lo N
).
Ho avuto l'impressione che lo N
di fronte alle stringhe fosse una buona pratica, ma non riesco a trovare alcuna discussione che consideri definitiva.
Ah, sulla difensiva, mi piace quel termine qui. +1 – jcollum
Penso che questo, combinato con quello sopra è la risposta. Penso che modificherò questo e lo chiamerò la risposta. – jcollum
@jcollum: non si tratta solo del successo in termini di prestazioni di una conversione. Stai indicando la semantica sbagliata ai futuri manutentori. È un po 'come scrivere predicati come 'WHERE SomeCol =' 1'', come se fosse una colonna' varchar', quando è davvero una colonna 'int'. Potrebbe funzionare, ma ciò non lo rende meno sbagliato e potrebbe portare a errori di confronto in futuro, man mano che lo script viene modificato. Ovviamente il codice generato non è considerato uno standard di qualità elevato come il codice scritto; lo stesso è generalmente vero per qualsiasi codice gen, prova a guardare il codice sottostante del designer di un Windows Form. – Aaronaught