>Salve a tutti
>Sto combattendo con dei tracciati di transcodifica che vengono
>creati a partire da un DB Sql server. La situazione è la sequente:
>Devo selezionare alcuni campi di una tabella, concatenare i valori
>ricevuti e inserirli in un'altro campo mantenendo però una larghezza
>fissa per ogni valore concatenato. Faccio un esempio:
>Diciamo che io faccio select a,b from t e che la select mi torna
>due record:
>record 1 = xxx , yyy
>record 2 = xxxx, zzzzzzz
>Entrambi i campi devono contenere 10 caratteri, quindi nel campo
>finale (quello che contiene la concatenazione fra i due) voglio
>ottenere:
>record 1 = _______xxx_______yyy
>record 2 = ______xxxx___zzzzzzz
>Con i caratteri di underscore che rappresentano gli spazi lasciati
>dai caratteri vuoti.
>Qualcuno sa come posso fare?
Ciao,
Ci aiuti a capire da dove deriva tale esigenza?
Perché devi valorizzare una nuova colonna?
Non puoi generare "al volo" la concatenazione che ti serve? In questo modo eviti di dover riaggiornare la nuova colonna ogni qual volta aggiorni uno dei due campi che intendi concatenare.
In alternativa potresti ricorrere ad una colonna calcolata come nel seguente esempio:
USE tempdb;
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY PRIMARY KEY,
FirstName varchar(10) NOT NULL,
LastName varchar(10) NOT NULL,
FullName AS
RIGHT(SPACE(10) + FirstName, 10) +
RIGHT(SPACE(10) + LastName, 10)
);
INSERT dbo.Students VALUES
('Lorenzo', 'Benaglia')
, ('Luca', 'Bianchi')
, ('Andrea', 'Montanari');
SELECT *
FROM dbo.Students;
/* Output:
StudentID FirstName LastName FullName
----------- ---------- ---------- --------------------
1 Lorenzo Benaglia Lorenzo Benaglia
2 Luca Bianchi Luca Bianchi
3 Andrea Montanari Andrea Montanari
(3 row(s) affected)
*/
DROP TABLE dbo.Students;
Se utilizzi SQL Server 2005+ volendo puoi materializzare la colonna calcolata nelle data pages che costituiscono la tabella pecificando la clausola PERSISTED.
Per ulteriori dettagli consulta i Books Online.
>Grazie a tutti per le eventuali risposte
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org