4

当我尝试连接操作数类型冲突时出现以下错误:文本与位不兼容数据类型的无效运算符:运算符等于添加,类型等于位

SELECT
  F.SubmissionId, F.FormId, 
  F.DocumentTitle + F.Archive AS DocumentTitle,
  F.Keywords, F.PublishDate, F.PostedDate, F.ExpiredDate, 
  F.IsFlag, F.IsAdminOnly, F.IsCompleted, F.IsPublished,
  F.CreatedDate, F.AllowComments, 
  CASE WHEN F.Archive = 1 THEN 'Yes' ELSE 'No' END AS Archive, 
  I.ItemId, I.SubmissionId AS Expr1, I.ParamId, I.ParamValue
FROM
  dbo.app_FormSubmission AS F
    INNER JOIN dbo.app_FormSubmissionItems AS I ON 
      F.SubmissionId = I.SubmissionId
4

3 回答 3

7

你需要转换,运行这个看看我的意思

declare @i bit
select @i = 1

select 'abc'  + convert(varchar(1),@i) -- fine
select 'abc'  + @i  -- will fail
于 2009-01-29T16:39:29.037 回答
2

无论您的情况如何,您为什么不在表示层中执行此操作?

如果这不是一个选项,那么这就是我会做的。首先,我会检查case语句是否按预期工作,如果是,我会使用concat SQL 函数来连接字符串。

并确保在 F.DocumentTitle + F.Archive 中使用 F.Archive 时,您实际上指的是case子句的结果,而不是原始列。

于 2009-01-29T16:36:39.633 回答
1

我必须这样做才能使它工作。感谢 SQLMenace

SELECT CONVERT(varchar(50), F.DocumentTitle) + CONVERT(varchar(1), F.Archive) AS Expr1

于 2009-01-29T18:19:52.517 回答