Sql server 如何将字符串与位(documentTitle+;Archive)SQL server 2005连接起来

Sql server 如何将字符串与位(documentTitle+;Archive)SQL server 2005连接起来,sql-server,string,bit,concatenation,Sql Server,String,Bit,Concatenation,当我尝试连接时,出现以下错误 操作数类型冲突:中的文本与位不兼容 数据类型的运算符无效:运算符等于加法,类型等于位 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.IsPub

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

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

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

如果这不是一个选择,那么我会这么做。首先,我要检查case语句是否按预期工作,如果按预期工作,我将使用concatsql函数连接字符串


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

您需要转换,请运行此命令以了解我的意思

declare @i bit
select @i = 1

select 'abc'  + convert(varchar(1),@i) -- fine
select 'abc'  + @i  -- will fail

我必须这样做才能让它工作。谢谢你的威胁


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

您希望看到“F.DocumentTitle+F.Archive AS DocumentTitle”的结果是什么?