3

执行此 SELECT 语句时遇到问题:

SELECT *
FROM Table1
ORDER BY column1, column2

我收到关于算术溢出的错误。我发现哪一列是问题,那somecolumn是 numeric(10, 0) 但在某些行中包含超过 10 个数字,并且不要问我是怎么发生的,因为我不知道 :)

我只是删除了足够的数字,使列最多有 10 位数字,这解决了该错误的错误,但问题是大约有 100 行这样的行。

问题是:什么会导致这样的问题,以及如何编写正确的 SQL 语句来选择这些行?

在我看来,问题最终可能是某种截断列中值的方式。这只是一个假设:可能第一个列是数字(20, 0),并且包含 10 或 11 位数字的值,但后来有人决定必须将此列更改为数字(10, 0),然后出现问题。这只是一些假设。

4

1 回答 1

2

为什么不只是 ALTER 这个专栏?
或者您也可以尝试像这样转换它:

SELECT CONVERT(bigint,(somecolumn))  
FROM Table1  
ORDER BY column1, column2 
于 2013-04-11T11:59:08.863 回答