@ Гном, SELECT Column1 + Column2 + Column3
будет работать до тех пор, пока все столбцы текстовые и не нулевые.
||
является оператором конкатенации для Oracle. Для доступа это так &
.
Так что лучшее утверждение будет
SELECT Column1 & Column2 & Column3 as NewColumn FROM MyTable
Очевидно, что если вы хотите разделить пространство, то это становится
SELECT Column1 & " " & Column2 & " " & Column3 as NewColumn FROM MyTable
&
Оператор будет рассматривать нулевые значения как пустую строку.
Если вы не хотите, чтобы появлялись лишние пробелы, вы можете использовать что-то вроде
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...
столько раз, сколько вам нужно.