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ステートメントが期待どおりに機能するかどうかを確認し、機能する場合は、concatSQL関数を使用して文字列を連結します。

また、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 に答える