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

时间:2010-03-09 16:11:13

标签: sql sql-server

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

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

我知道我可以通过代码执行此操作,但希望我可以使用sql查询来完成这些操作吗?

3 个答案:

答案 0 :(得分:5)

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

select 
    case when isnumeric(col1) = 1 then cast(col1 as int) end
from YourTable

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

select *
from YourTable
where isnumeric(col1) = 1

答案 1 :(得分:2)

是的,你问的是可以做的。

第1步:添加新列

在表格中添加小数(9,2)列(PriceOfItem)(ItemPrices)

步骤2:运行此查询(根据需要更改对象名称)

Update ItemPrices
Set PriceOfItem = Convert (Decimal (9, 2), PriceText)
Where 1=1
AND IsNumeric (PriceText) = 1

答案 2 :(得分:0)

这听起来怎么样?我用它所有的时间。简单&快。

NewColumn: iif(
               isnumeric([OldColumn]),
               cdbl([OldColumn])
           )