通过 Access 数据库中的查询将多列合并为一列

通过 Access 数据库中的查询将多列合并为一列

我需要编写一个组合多列文本的查询。

我的数据库是我计算机上的壁纸数据库(我使用约翰的背景切换器),所以我可以轻松找到它们并对它们进行分类。

每条记录有 4 个字符字段(我认为这比标签样式更容易。)我需要一个查询来合并这些字段,以便所有 4 个不同字段的所有字符都在一列中,而不是合并到一个字段中。请记住,有些字符字段是空的。

此外,如果有更简单的方法可以做到这一点,请通知我。

这是我想要的样本:

(table)
col1|col2|col3    
x   |y   |z    
c   |    |    

(query output)    
outputcol    
x    
y
z  
c

答案1

也许是这个?

SELECT col1 FROM table
UNION
SELECT col2 FROM table
UNION
SELECT col3 FROM table
UNION
SELECT col4 FROM table

UNION仅连接不同的值(如果您有 4 个“t”值,则仅放置一个)。 UNION ALL将存储重复项。

答案2

@A Dwarf,SELECT Column1 + Column2 + Column3只要所有列都是文本并且非空,就可以工作。

||是 Oracle 的连接运算符。对于 Access 来说,它是&

因此更好的说法是

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...多次。

答案3

SELECT (Column1 + Column2 + Column3 + Column4)
FROM YourTable

以上代码将连接所有四列。如果您需要空格分隔符:

SELECT (Column1 + " " + Column2 + " " + Column3 + " " + Column4)
FROM YourTable

因此加号起到了连接符的作用。最后,如果您需要命名结果列:

SELECT (Column1 + Column2 + Column3 + Column4) AS ColumnName
FROM YourTable

最后说明一下,距离我上次使用 Access 已经过去很久了,但我认为您也可以使用 || 运算符连接字段:

SELECT (Column1||Column2||Column3||Column4)
FROM YourTable

根据这个答案的评论,不同的数据库引擎可能会提供不同的语法。毫无疑问,这很烦人:

SELECT Column1 & Column2 & Column3 & Column4
FROM YourTable

这里我们用许多 Windows 应用程序中常见的“&”连接符号替换了“+”。

干杯

相关内容