2010-06-28 3 views
2

У меня есть SQL-запрос, как это (псевдокод)SQL столбцы в строке

Select ID, TEXT, 1, 2, 3, 4, 5, 6, 7 from blabla 

но то, что мне нужно, это запрос с 3 столбцами

Select ID, TEXT, STRING(1, 2, 3, 4, 5, 6, 7) from blabla 

я могу это сделать только с SQL?

EDIT:

Дополнительный вопрос: Это не работает, если 1-7 возврата NULL или ничего. Как я могу преобразовать NULL в пустую строку? (MySQL 2005)

+6

Какая система баз данных и какая версия? Обработка строк довольно специфична для поставщиков и продуктов ... –

+0

MySQL 2005 ??Вы имеете в виду MySQL (пронумерованные версии 4, 5, 6) или вы имеете в виду Microsoft SQL Server (который имеет версию 2005) ..... –

ответ

2

In T-SQL/MS-SQL:

# With Space 
SELECT ID, TEXT, 
    (1 + ' ' + 2 + ' ' + 3 + ' ' + 4 ' ' + 5 + ' ' + 6 + ' ' + 7) as Merged 
FROM blabla 

# Without Space 
SELECT ID, TEXT, 
    (1 + 2 + 3 + 4 + 5 + 6 + 7) as Merged 
FROM blabla 

In My-SQL:

# With Space 
SELECT ID, TEXT, 
    CONCAT_WS(' ', 1, 2, 3 , 4, 5, 6, 7) as Merged 
FROM blabla 

# Without Space 
SELECT ID, TEXT, 
    CONCAT(1, 2, 3 , 4, 5, 6, 7) as Merged 
FROM blabla 

In PL-SQL/Oracle:

# With Space 
SELECT ID, TEXT, 
    1 || ' ' || 2 || ' ' || 3 || ' ' || 4 || ' ' || 5 || ' ' || 6 || ' ' || 7 as Merged 
FROM blabla 

# Without Space 
SELECT ID, TEXT, 
    1 || 2 || 3 || 4 || 5 || 6 || 7 as Merged 
FROM blabla 
+1

Хотя вам нужно сделать CAST (1 AS nvarchar) + '' + CAST (2 AS nvarchar) + ... на SQL Server всякий раз, когда вы объединяете значения, не введенные как строка. – erikkallen

0

Просто нам символ + для конкатенации строк, предполагая, что ваши 1-7 строковые поля:

Select ID, TEXT, 1 + ' ' + 2 + ' ' + 3 + ' ' + 
4 + ' ' + 5 + ' ' + 6 + ' ' + 7 as YourFieldName from blabla 

Я включил пробелы между полями, однако вы также можете указать запятую или другой делиметр.

1

В t-sql:

Select ID, TEXT, 1 + 2 + 3 + 4 + 5 + 6 + 7 from blabla 

В PL-SQL:

Select ID, TEXT, 1 || 2 || 3 || 4 || 5 || 6 || 7 from blabla 

В MySQL:

Select ID, TEXT, CONCAT(1, 2, 3, 4, 5, 6, 7) from blabla 

Преобразование/слепки может потребоваться в зависимости от типов данных столбцов 1 - 7

+0

Как конвертировать/отличать NULL к '' в MS-SQL? – nickik

+0

@nickik: используйте конструкцию 'ISNULL (column," ")' –

0

Если я не прав:

Выберите ID, ТЕКСТ, '1, 2, 3, 4, 5, 6, 7' от blabla;

0

Выберите ID, ТЕКСТ, '1', '2', '3', '4', '5', '6', '7' from blabla;

0
Select ID, 
     TEXT, 
     CONCAT_WS(',', 1, 2, 3, 4, 5, 6, 7) as Concatenated 
    from blabla 

или

Select ID, 
     TEXT, 
     CONCAT(1, ',', 2, ',', 3, ',', 4, ',', 5, ',', 6, ',', 7) as Concatenated 
    from blabla 

в MySQL

Select ID, 
     TEXT, 
     1 || ',' || 2 || ',' || 3 || ',' || 4 || ',' || 5 || ',' || 6 || ',' || 7) as Concatenated 
    from blabla 

в Oracle

, но зависит от вашего вкуса базы данных

0

я думаю, что его нельзя использовать запятую вместо плюс

Смежные вопросы