求助 :不允许从数据money 到 nvarchar 的隐性转换。请使用 CONVERT 函数来运行此查询


因为strspare1 列中 有数据,所以只能通过更改列的类型来实现,麻烦大家看一下怎么解决

alter table cm_contract_Pay alter column strspare1 nvarchar(128)

报错:
不允许从数据类型 money 到 nvarchar 的隐性转换。请使用 CONVERT 函数来运行此查询。

28 个解决方案

#1


提示很明显啊 

--try
convert(varchar(128),cm_contract_Pay )

#2


哦 是nvarchar 

#3


引用 1 楼 fredrickhu 的回复:
SQL code提示很明显啊--tryconvert(varchar(128),cm_contract_Pay )

UP,显示转换一下就好

#4


to 小F:
cm_contract_Pay 是表名

#5


convert(nvarchar(300),strspare1  )

#6


引用 4 楼 bancxc 的回复:
to 小F:
cm_contract_Pay 是表名

你换成列名( ⊙ o ⊙ )!

#7


strspare1 是列名阿

#8


引用 4 楼 bancxc 的回复:
to 小F:
cm_contract_Pay 是表名


哦 米注意

用小爱的吧 

#9


没看清楚就UP了,SORRY

#10


小爱的啥意思,写个全的

#11


ALTER TABLE cm_contract_Pay ALTER COLUMN strspare1 NUMERIC(38,4)
ALTER TABLE cm_contract_Pay ALTER COLUMN strspare1 NVARCHAR(128)

#12


to  csdyyr:
ALTER TABLE cm_contract_Pay ALTER COLUMN strspare1 NVARCHAR(128)
报那个错 跟我的一样

#13


先转换一下表中数据!然后在修改列为nvarchar

#14


看看alter的用法
http://hi.baidu.com/qljwm/blog/item/166c353146de001aeac4af5b.html

#15


两句都要执行。

#16


乔峰:怎么先转化表中的数据,

#17


---try:
alter table cm_contract_Pay MODIFY (strspare1 nvarchar(128))

#18



ALTER TABLE cm_contract_Pay ALTER COLUMN strspare1 NUMERIC(38,4)

#19


你读的数据出来看看

#20


ms csdyyr 的是对的  谢谢楼上各位  明天结

#21


引用 20 楼 bancxc 的回复:
ms csdyyr 的是对的  谢谢楼上各位  明天结

你原来的不是money 类型吧?

#22


小爱:原来是money型的 我想把它转化成nvarchar 

#23


引用 22 楼 bancxc 的回复:
小爱:原来是money型的 我想把它转化成nvarchar

试试十一楼的方法. 

#24


引用 22 楼 bancxc 的回复:
小爱:原来是money型的 我想把它转化成nvarchar
我试了,
只用一句
ALTER TABLE cm_contract_Pay ALTER COLUMN strspare1 NVARCHAR(128)
没问题

不明白你那为什么不行

#25


不知道为什么有的数据库不行 
我自己的机器上也没问题 就是服务器上有问题 
谢谢小爱关注

#26


不会是该表有触发器在干预吧

#27


刚在SQL2000的环境下测试:

--> 生成测试数据表:tb

IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([a] NVARCHAR(10),[b] nvarchar(50),[c] money)
INSERT [tb]
SELECT 'a',N'b',1 
GO
--SELECT * FROM [tb]

-->SQL查询如下:
alter table tb alter column c varchar(20)
go
/*
服务器: 消息 260,级别 16,状态 1,行 1
不允许从数据类型 money 到数据类型 varchar 的隐性转换(表 'mydb.dbo.tb',列 'c')。请使用 CONVERT 函数来运行此查询。
*/
alter table tb alter column c dec(18,4)
go
/*
(所影响的行数为 1 行)
*/
alter table tb alter column c varchar(20)
/*
(所影响的行数为 1 行)
*/

#28


谢谢tony 
我现在的疑问是有的数据库报错,而有的不报呢
会不会是因为操作系统的64位才会报  
或者我的数据库的默认语言中文才不报的 


不管怎么样已经解决了 谢谢大家 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com