sql – 数据类型文本不能用作UNION,INTERSECT或EXCEPT运算符的操
我有一张桌子
> Id(PK) 它连接到另一个表 > Id(FK) 所有者可以是参与者,如果是,所有者和参与者都是相同的参考(在用户表中).所以我做了: 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 此查询应返回所有不同的数据集,其中某个@User是所有者或参与者或两者. 而如果SQL Server不会抛出它
由于Id是一个PK,而Text来自同一个表,SQL Server为什么要比较Text? 我可以使用UNION ALL来停止重复检测,但是我可以规避这一点,而不会失去结果的明显性? 解决方法正确的方法停止使用
解决方法 投射到NVARCHAR(MAX): SELECT TableA.Id,CAST(TableA.DescriptionText AS NVARCHAR(MAX)) FROM TableA WHERE TableA.Owner=@User UNION SELECT TableA.Id,CAST(TableA.DescriptionText AS NVARCHAR(MAX)) FROM TableA LEFT JOIN TableB ON (TableA.Id=TableB.Id) WHERE TableB.Participant = @User (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |