@Карлик, SELECT Column1 + Column2 + Column3
будет работать до тех пор, пока все столбцы являются текстовыми и ненулевыми.
||
- оператор конкатенации для Oracle. Для доступа это &
.
так что лучше заявление будет
SELECT Column1 & Column2 & Column3 as NewColumn FROM MyTable
очевидно, если вы хотите разделитель пространства, то он становится
SELECT Column1 & " " & Column2 & " " & Column3 as NewColumn FROM MyTable
&
оператор будет обрабатывать значения null как пустую строку.
если вы не хотите, чтобы дополнительные пробелы, то вы можно использовать что-то вроде
SELECT Nz([Column1] + " ","") & Nz([Column2] + " ","") & [Column3]
изменить:
Если вы также хотите включить оригинальные отдельные столбцы, а также объединенную версию, просто перечислите их, например.
SELECT Column1 & " " & Column2 & " " & Column3 as NewColumn, Column1, Column2, Column3 FROM MyTable
редактировать после прочтения примера вывода OP.
похоже, что мы все делаем совсем не то, что хотел ОП. Таким образом, чтобы достичь того, что вы просите в Примере, который вы показали, что вам нужно.
SELECT Column1 FROM MyTable WHERE Column1 Is Not Null and Column1<>""
UNION ALL
SELECT Column2 FROM MyTable WHERE Column2 Is Not Null and Column2<>""
UNION ALL
SELECT Column3 FROM MyTable WHERE Column3 Is Not Null and Column3<>""
если вы хотите удалить дубликаты, то вы просто нужно убрать слово ALL
, так что вы получите
SELECT Column1 FROM MyTable WHERE Column1 Is Not Null and Column1<>""
UNION
SELECT Column2 FROM MyTable WHERE Column2 Is Not Null and Column2<>""
UNION
SELECT Column3 FROM MyTable WHERE Column3 Is Not Null and Column3<>""
очевидно, вы можете повторить UNION SELECT...
столько раз, сколько вам нужно.