我有一个包含varchar列的表,其值应该是整数(遗留应用程序,在我到达公司之前构建的方式)。
我需要获取所有无法转换为整数的记录列表,以便修复它们。
我该怎么做?
答案 0 :(得分:4)
一个简单的方法是:
select MyColumn
from MyTable
where isnumeric(MyColumn) = 0
这假设您在转换时丢失小数就可以了。
答案 1 :(得分:3)
如果您的目的可以将分数或非标准表示(如1.3
或1E8
)视为“可转换为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]%”;