【问题标题】:Concatenation in SQL select query on Excel sheetExcel工作表上SQL选择查询中的连接
【发布时间】:2012-12-12 08:40:05
【问题描述】:

我现在上传了一个 Excel 文件,我想使用 select 查询从该工作表中读取数据,并且我想将 4 列与分隔符 _ 连接为 Type_name

我使用的查询是

select 
   *, '1' as fileid, 'Size' + '_' + 'Material' +'_' & 'Finishing' + '_' + 'Sides' as Type_Name  
from [sheet1$] 
where [Current Code] is not null or [Current Code] <> ''

除了Type_Name之外的所有数据都被查询正确返回

此查询将Type_Name 作为Size_Material_Finishing_Sides 返回

【问题讨论】:

  • 看看CONCAT()函数
  • 明确告诉您的查询将这些字符串文字值连接在一起:Size_Material_Finishing_Sides - 那么希望从中得到什么??
  • @marc_s - 我认为关键是 OP 想要 得到这个结果,但没有得到它。
  • @dan1111:不太清楚 - 我知道他在得到 Size_Material_Finishing_Sides,但真的想要别的东西......
  • @marc_s,我同意不清楚。

标签: sql excel


【解决方案1】:

这取决于您使用的 SQL 类型。

我假设您是从 Excel 或 MS Access 中查询的。在这种情况下,您应该使用String1 &amp; String2 &amp; ...

但是,还有其他选项:

SQL Server 使用String1 + String2 + ...

Oracle、DB2 和某些版本的 MySQL 使用 String1 || String2 || ...

大多数 MySQL 版本支持的方法是CONCAT(String1, String2, ...)

CONCAT() 存在于大多数 SQL 版本中,但请注意:您不能总是使用它来组合任意数量的字符串。例如,在 Oracle 和 DB2 中,此函数只能组合两个字符串。

您发布的示例包含+&amp; 的混合,这绝对行不通。

【讨论】:

    【解决方案2】:

    您正在使用 & 和 + 连接?你为什么首先连接?为什么不直接使用:

    'Size_Material_Finishing_Sides' as Type_Name
    

    如果这不是您期望的结果,您期望什么结果?

    【讨论】:

    • 想必,这只是一个简化的例子,OP实际上是想在结果中连接一些列。
    猜你喜欢
    • 2012-08-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多