我需要更新表格中的列。但只有在INT转换失败的地方才会失败。
到目前为止我有以下内容 - 但这会更新所有记录。
begin try
select cast(customerid as int) from Table_staging;
end try
begin catch
update Table_staging
set incorrectformat = 0
end catch
答案 0 :(得分:1)
update Table_staging
set incorrectformat = 0
where not customerid like '%[^0-9]%'
应该足够了。基本上,我们会为incorrectformat
的任何行标记customerid
,其中包含任意数量的字符,然后字符不 0-9,比任意数量的字符。
即。与此不匹配的值恰好是仅包含数字的值。
ISNUMERIC
的主要问题是它回答了一个我不相信任何人会理所当然地问的问题 - “这个字符串是否可以转换为任何数字数据类型?我不关心它可以转换成哪种类型,也没有必要告诉我哪些类型的响应“