1

让我先声明我是 SQL 新手。我必须分开我所做的查询他们自己工作得很好,但是当我用 UNION 加入他们时,我收到以下错误消息:

Conversion failed when converting the varchar value '00-12-070-001' to data type int

对此的特殊之处在于我加入了两个 varchar 字段。第一个包含 GL 帐号(带有数字和破折号),而第二个包含带有字母和数字的部件号。

我尝试了多种解决方法,例如使用 CASE 作为 char 并为单个查询创建视图,然后加入它们无济于事!我被难住了,我不明白为什么 MS-SQL 会尝试将 varchar 字段转换为 int,当它要与另一个 varchar 字段连接时?

您在这里的帮助将不胜感激。为了让我的问题保持简单,我省略了细节,但很乐意为您提供任何有助于您解决这个问题的具体信息。顺便说一句,我使用的是 MS-SQL 2008。

4

1 回答 1

1

以下是使用 UNION 组合两个查询的结果集的基本规则:

  • 在所有查询中,列的数量和顺序必须相同。

  • 数据类型必须兼容

参考:UNION (Transact-SQL)

基于此,以下是错误的:

SELECT 1
UNION
SELECT 'a'.

虽然以下是正确的,但太多了......

SELECT 'a'
UNION
SELECT CONVERT(VARCHAR(1),1)
于 2013-10-22T13:07:39.407 回答