Le texte de type de données ne peut pas être utilisé comme opérande pour les opérateurs UNION, INTERSECT ou EXCEPT car il n'est pas comparable

J'ai une table

  • Id (PK)
  • Propriétaire int
  • DescriptionText texte

qui est jointe à une autre table

  • Id (FK)
  • Participant int

Le Propriétaire peut être un Participant, et s'il l'est, de la même référence (dans la table user) est le Propriétaire et le Participant. J'ai donc fait:

SELECT TableA.Id,TableA.Owner,TableA.Text
FROM TableA
WHERE TableA.Owner=@User
UNION
SELECT TableA.Id,TableA.Owner.TableA.Text
FROM TableA LEFT JOIN TableB ON (TableA.Id=TableB.Id)
WHERE TableB.Participant = @User

Cette requête doit retourner tous les jeux de données distincts, où un certain @Utilisateur est le Propriétaire ou le Participant ou les deux.

Et il serait, si SQL Server ne pas jeter

Le type de données texte ne peut pas être utilisé comme opérande de l'UNION, INTERSECT ou except les opérateurs parce qu'il n'est pas comparable.

Depuis Id est un PK, et le Texte est de la même table, pourquoi SQL Server souhaitez comparer le Texte à tous?

Je peux utiliser UNION ALL pour arrêter la détection des doublons, mais puis-je contourner cela sans perdre la distinction des résultats?

source d'informationauteur Alexander