2012-02-07 2 views
3

Скажем, у меня есть таблица с столбцами firstName и lastName. Можно ли сделать INSERT INTO newTable SELECT firstName, lastName FROM oldTable, но вместо двух столбцов в результирующей таблице объедините два столбца?SQL INSERT INTO SELECT, объединить столбцы varchar

Точно так же возможно ли конкатенация столбца со статической строкой?

ответ

6

Да, вы могли бы сделать

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

это concatinates столбцы FirstName и LastName, а также статическую строку ' ' в между

EDIT: добавлен LTRIM(RTRIM(...)) так, если ПгвЬЫате или LastName равна нулю, результат не будет иметь ведущее или конечное пространство в результате статической строки ' '.

+3

остерегайтесь 'значения NULL' хотя ...' NULL' сцепляется с чем-то еще дают 'NULL' –

+0

совершенны, не знал, что смогу это сделать. И спасибо за головы. Darren – carpat

+0

@DarrenKopp спасибо, отредактирован, чтобы учесть ошибки. –

2

Да, и если у вас есть статическая строка или переменная, которую можно сказать:

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;