作为INT检查SQL

时间:2014-01-28 08:12:54

标签: sql sql-server sql-server-2008 casting

我需要更新表格中的列。但只有在INT转换失败的地方才会失败。

到目前为止我有以下内容 - 但这会更新所有记录。

begin try
    select cast(customerid as int) from Table_staging;
end try
begin catch
update Table_staging
set incorrectformat = 0
end catch

1 个答案:

答案 0 :(得分:1)

update Table_staging
set incorrectformat = 0
where not customerid like '%[^0-9]%'

应该足够了。基本上,我们会为incorrectformat 的任何行标记customerid,其中包含任意数量的字符,然后字符 0-9,比任意数量的字符。

即。与此不匹配的值恰好是仅包含数字的值。


ISNUMERIC的主要问题是它回答了一个我不相信任何人会理所当然地问的问题 - “这个字符串是否可以转换为任何数字数据类型?我不关心它可以转换成哪种类型,也没有必要告诉我哪些类型的响应“