我有一个包含产品成本的列的表,但有些(很少)行在列中混合了文本。
是否可以创建一个十进制类型的新列,并用另一列填充它,并忽略其中包含“错误”数据的行?
我知道我可以通过代码执行此操作,但希望我可以使用sql查询来完成这些操作吗?
答案 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])
)