我有一个t视图,在其中我从不同的表中查询数据.我用一个联盟来获取所有的数据。
Create view ViewName
(
ID,
Name,
Budget,
...
)
SELECT
ID,
Name,
Budget,
...
FROM Table1
UNION
SELECT
ID,
Name,
Budget,
FROM Table2当我查询视图时,会出现以下错误。但是,我可以选择两个语句中的任何一个部分,没有错误。我该如何解决这个问题?
Msg 8115,级别16,状态2,第1行算术溢出错误,将表达式转换为数据类型bigint。
发布于 2018-05-07 18:31:27
首先,应该通过逐个注释列来识别哪一列会产生错误:
SELECT
ID
--,Name
--,Budget
...
FROM Table1
UNION
SELECT
ID
--,Name,
--,Budget -- putting commas at beginning is nice in such scenario
FROM Table2然后,您必须处理隐式转换和不正确的数据类型。
来自友联市
以下是使用UNION组合两个查询的结果集的基本规则:
当数据类型不同时,生成的数据类型根据数据类型优先.的规则确定,当类型相同,但精度、比例或长度不同时,则根据用于组合表达式的相同规则来确定结果。
..。
当运算符组合两个不同数据类型的表达式时,数据类型优先级规则指定优先级较低的数据类型转换为具有较高优先级的数据类型。如果转换不是受支持的隐式转换,则返回一个错误。
我的猜测是从VARCHAR转换到BIGINT。
https://stackoverflow.com/questions/50220404
复制相似问题