Questa scelta fatta da Microsoft può essere discutibile nel senso che è vero che effettivamente se una cella del database contiene, tra gli altri caratteri, il carriage return (l'invio), durante la copia, così come vengono mantenuti gli spazi e tutto il resto della punteggiatura, è giusto che venga mantenuto anche il CR, però questo potrebbe creare problemi (o vantaggi a seconda del caso), se vogliamo andare ad incollare i dati ad esempio su un file Excel.
Creazione tabella di esempio:
declare @Anagrafe table(Test nvarchar(20)) insert into @Test(Test) values('test' + char(13) + 'test')Query di esempio:
select test from Anagrafe where ID = '10000'
Risultato query:
Copia del risultato su Excel:
Questo perchè i due test erano stati inseriti a database premendo un invio tra di essi.
E' possibile risolvere l'inghippo, a meno che il risultato in questo formato non vada già bene, applicando una funzione di REPLACE, che vada appunto a sostituire i caratteri char(10) ovvero il line feed e il char(13) ovvero il carriage return con un spazio vuoto ad esempio, o qualunque altro carattere a voi sembri più consono.
Soluzione:
select REPLACE(CAST(test as varchar(MAX)), CHAR(13) + CHAR(10), ' ') from Anagrafe where ID = '10000'
Risultato query:
Copia del risultato su Excel:
0 commenti:
Posta un commento
Grazie per aver visitato TheICTAuthority. Nel caso in cui il tuo commento sia una richiesta ti risponderemo al più presto.