2009-01-29 18 views
1

Je reçois l'erreur suivante lorsque j'essaie de concaténer Conflit de type d'opérande: texte incompatible avec le bit Opérateur non valide pour le type de données: Opérateur égal à Add, Type bit égalComment puis-je concaténer une chaîne avec un serveur SQL (documentTitle + Archive) 2005

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 
+0

Qu'est-ce que vous attendez de voir la suite de « F.DocumentTitle + F.Archive AS DocumentTitle "? – edgi

Répondre

2

Pourquoi ne le faites-vous pas dans la couche de présentation, quelle qu'elle soit dans votre cas?

Si ce n'est pas une option, alors voici ce que je ferais. Premièrement, je vérifie si l'instruction case fonctionne comme prévu et si c'est le cas, j'utiliserais concat fonction SQL pour concaténer les chaînes. Et assurez-vous que lors de l'utilisation de F.Archive dans F.DocumentTitle + F.Archive vous faites référence au résultat de votre clause case, pas à la colonne d'origine.

6

vous devez convertir, lancer pour voir ce que je veux dire

declare @i bit 
select @i = 1 

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

je devais le faire pour le faire fonctionner. Merci SQLMenace

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