如何筛选查询以仅显示无法将列转换为int的结果

时间:2010-11-10 18:19:11

标签: sql sql-server tsql sql-server-2000

我有一个包含varchar列的表,其值应该是整数(遗留应用程序,在我到达公司之前构建的方式)。

我需要获取所有无法转换为整数的记录列表,以便修复它们。

我该怎么做?

4 个答案:

答案 0 :(得分:4)

一个简单的方法是:

select MyColumn
from MyTable
where isnumeric(MyColumn) = 0

这假设您在转换时丢失小数就可以了。

答案 1 :(得分:3)

如果您的目的可以将分数或非标准表示(如1.31E8)视为“可转换为int”,则使用:

SELECT  *
FROM    mytable
WHERE   IsNumeric(myfield) = 0

答案 2 :(得分:2)

ISNUMERIC不会为空字符串(= 0)或小数字剪切它。

SELECT * FROM MyTable WHERE MyColumn LIKE '%[^0-9]%'

此否定搜索任何具有0-9范围之外字符的内容。你给出了负面的整数吗?

答案 3 :(得分:1)

您可以尝试使用正则表达式。不确定您使用的是哪个DBMS,但这样的内容可能适用于您的数据库。它应该在some_column中找到带有字符(大/小)字符的记录。

SELECT * FROM sometable WHERE some_column SIMILAR TO'%[A-Z | A-Z]%”;