SQL 改变 字段类型 出错~ 求一SQL语句

lqkankan 2010-11-18 10:02:29
表 groupbuyinfo

有一字段 sellingprice (nvarchar(200),not null)

想要把 sellingprice 的类型 改成 decimal(18,2)

使用 语句:

alter   table   groupbuyinfo   alter   column   sellingprice   decimal(18,2)


出错:

消息 8114,级别 16,状态 5,第 1 行
从数据类型 nvarchar 转换为 numeric 时出错.

语句已终止。

应该是 sellingprice 字段里 有不符合要求的数据~ groupbuyinfo 里有 大约 8000条 数据~

求一SQL语句 能把 sellingprice 字段里的数据 统一改为 符合 decimal(18,2) 类型的 数据~~ 谢谢
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqkankan 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
从数据类型 nvarchar 转换为 numeric 时出错.

你的数据中存在非数值型数据,所以不能直接这么改。

建议你先删除非数值型数据。

update groupbuyinfo set sellingprice = '0' where isnumeric(sellingprice) <> 1

然后再用你的
alter table groupbuyinfo alter ……
[/Quote]

谢谢 谢谢 查出 有两条数据 sellingprice 值 为空~ 改了一下

再修改 字段类型 成功了~ 谢谢 谢谢
dawugui 2010-11-18
  • 打赏
  • 举报
回复
从数据类型 nvarchar 转换为 numeric 时出错.

你的数据中存在非数值型数据,所以不能直接这么改。

建议你先删除非数值型数据。

update groupbuyinfo set sellingprice = '0' where isnumeric(sellingprice) <> 1

然后再用你的
alter table groupbuyinfo alter column sellingprice decimal(18,2)
华夏小卒 2010-11-18
  • 打赏
  • 举报
回复
--delete 删除这些数据后,才能修改列类型
-- 慎重执行,请先备份
delete from tb where sellingprice like '%[^0-9]%'
华夏小卒 2010-11-18
  • 打赏
  • 举报
回复
有非数值型的记录,要先删掉,才能改哦
--select
select * from tb where sellingprice like '%[^0-9]%'
lqkankan 2010-11-18
  • 打赏
  • 举报
回复
求助~

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧