2012-02-07 5 views
3

Dites que j'ai une table avec les colonnes firstName et lastName. Est-il possible de faire un INSERT INTO newTable SELECT firstName, lastName FROM oldTable, mais au lieu d'avoir deux colonnes dans le tableau résultant, concaténer les deux colonnes?SQL INSERT INTO SELECT, combiner les colonnes varchar

De même, est-il possible de concaténer une colonne avec une chaîne statique?

Répondre

6

Oui, vous feriez

SELECT LTRIM(RTRIM(ISNULL(firstName, '') + ' ' + ISNULL(lastName, ''))) FROM oldTable 

ce concatinates les colonnes FirstName et LastName, ainsi que la chaîne statique ' ' entre

EDIT: ajouté LTRIM(RTRIM(...)) donc si prenom lastName est nulle, le résultat n'aura pas d'espace de début ou de fin à cause de la chaîne ' ' statique.

+3

méfiez-vous des valeurs 'null' mais ...' null' concaténé avec quelque chose d'autre rendements 'null' –

+0

Parfait, Je ne savais pas que je pouvais le faire. Et merci pour les heads up Darren – carpat

+0

@DarrenKopp merci, édité pour prendre en compte les nulls. –

2

Oui, et si vous avez une chaîne statique ou une variable, vous pouvez dire:

DECLARE @variable VARCHAR(255); 

SET @variable = 'some string'; 

INSERT INTO dbo.NewTable(column name) 
SELECT 
    COALESCE(firstname, '') + ' ' + COALESCE(lastname, '') + @variable + 'static string' 
FROM dbo.OldTable;