当我这样做时
SELECT RecTime, CAST(ID as nvarchar(MAX)) AS Col, InitialValue FROM [dbo].[Changes]
我没有错误
当我这样做时
SELECT RecTime, Col, InitialValue FROM [dbo].[XDeltaIntervals]
我没有错误
但是当我做的时候
SELECT RecTime, CAST(ID as nvarchar(MAX)) AS Col, InitialValue
FROM [dbo].[Changes]
UNION ALL
SELECT RecTime, Col, InitialValue FROM [dbo].[XDeltaIntervals]
来自XDeltaIntervals的Col是nvarchar(MAX)
我收到了错误消息:
消息245,级别16,状态1,行2转换值nvarchar时出错 “davl> 40”到数据类型位。注意! NULL被排除在外 聚合或其他操作SET。
davl> 40是来自XDeltaIntervals的Col,它是nvarchar,我无法理解我在哪里将它转换为位:S
如何避免将Col从第二部分转换为bit的请求?
答案 0 :(得分:1)
您是否尝试过逆转UNION的顺序?
SELECT RecTime, Col, InitialValue
FROM [dbo].[XDeltaIntervals]
UNION ALL
SELECT RecTime, CAST(ID as nvarchar(MAX)) AS Col, InitialValue
FROM [dbo].[Changes]
结果集的数据类型基于第一个SELECT语句的值。
答案 1 :(得分:1)
Attention! NULL is excluded in the aggregate, or other operations SET.
似乎与您显示的查询没有任何关联。是这些观点中的任何一个吗?
若然,请尝试EXEC sp_refreshview 'dbo.XDeltaIntervals'
答案 2 :(得分:1)
看起来好像> “col”的实际列名中的字符被解释为运算符。如果将column-name包装在方括号[]中,该怎么办?