【问题标题】:How can I concatenate a String with a Bit (documentTitle+Archive) SQL server 2005如何将字符串与位 (documentTitle+Archive) SQL server 2005 连接
【发布时间】:2009-01-29 16:33:31
【问题描述】:

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

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

【问题讨论】:

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

标签: sql-server string bit concatenation


【解决方案1】:

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

declare @i bit
select @i = 1

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

【讨论】:

    【解决方案2】:

    无论你的情况是什么,你为什么不在表示层做呢?

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

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

    【讨论】:

      【解决方案3】:

      我必须这样做才能让它发挥作用。感谢 SQLMenace

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2016-06-22
        相关资源
        最近更新 更多