列中有一个数字,很少有行混合文本,我可以创建一个新的数字列吗?

Bla*_*man 3 sql sql-server

我有一个表有一个产品成本的列,但有些(很少)行在列中混合了文本.

是否可以创建一个十进制类型的新列,并用另一列填充它,并忽略其中包含"坏"数据的行?

我知道我可以通过代码来做到这一点,但希望我能用sql查询做一些怎么做?

And*_*mar 5

您可以使用大小写仅转换整数列.对于非数字列,这将返回NULL:

select 
    case when isnumeric(col1) = 1 then cast(col1 as int) end
from YourTable
Run Code Online (Sandbox Code Playgroud)

或者您可以忽略非数字列:

select *
from YourTable
where isnumeric(col1) = 1
Run Code Online (Sandbox Code Playgroud)