执行报:将 varchar 值 '15.44' 转换为数据类型为 int 的列时发生语法错误。
,我要把这列数据改外万为单位。其它列都正常,就这里报错
11 个解决方案
#1
int是整形,没有小数点~
#2
select cast((rtrim(ltrim(15.44))/10000) as numeric(6,2))
那这个怎么改,不报错,15.44这个内容不能变,
那这个怎么改,不报错,15.44这个内容不能变,
#3
DECLARE @i VARCHAR(20)
SET @i = '15.44'
SELECT CONVERT(NUMERIC(6,2),CASE WHEN isnumeric(@i) = 1 THEN CONVERT(decimal(18,4),@i)
ELSE 0 END*1.0 /10000)
参考
#4
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6))
我把你的numeric(6,2)改成了numeric(6,6)
#5
同意 楼上
#6
-->你除10000后这个去两位小数
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,2))
/*
--------------------------------------
0.00
*/
-->小数位后面预留6位
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6))
/*
--------------------------------------
0.001544
*/
#7
报错是因为当你使用ltrim(rtrim())的时候隐式把数据类型转换成varchar了,然后报错出现在/10000这里,这里又要转换类型才不会报错,由于我不知道你最终想得到什么数据,所以不给出语句了。但是问题就在这里
#8
我看了,那个字段是char类型的,我想把这个字段的数据转换为万为单位,我最新没加ltrim(rtrim()),后来报错,在加上的
#9
select cast((rtrim(ltrim('15.44'))) as numeric(6,2))/10000
#10
ltrim(rtrim())只是把15.44左右两边的空格去掉了,对你报错没有帮助。
如果不想要,那SQL就是这样:
如果不想要,那SQL就是这样:
select cast((convert(float,15.44)/10000) as numeric(6,6))
#11
select cast(rtrim(ltrim('15.44')) as numeric(6,2))/10000
#1
int是整形,没有小数点~
#2
select cast((rtrim(ltrim(15.44))/10000) as numeric(6,2))
那这个怎么改,不报错,15.44这个内容不能变,
那这个怎么改,不报错,15.44这个内容不能变,
#3
DECLARE @i VARCHAR(20)
SET @i = '15.44'
SELECT CONVERT(NUMERIC(6,2),CASE WHEN isnumeric(@i) = 1 THEN CONVERT(decimal(18,4),@i)
ELSE 0 END*1.0 /10000)
参考
#4
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6))
我把你的numeric(6,2)改成了numeric(6,6)
#5
同意 楼上
#6
-->你除10000后这个去两位小数
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,2))
/*
--------------------------------------
0.00
*/
-->小数位后面预留6位
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6))
/*
--------------------------------------
0.001544
*/
#7
报错是因为当你使用ltrim(rtrim())的时候隐式把数据类型转换成varchar了,然后报错出现在/10000这里,这里又要转换类型才不会报错,由于我不知道你最终想得到什么数据,所以不给出语句了。但是问题就在这里
#8
我看了,那个字段是char类型的,我想把这个字段的数据转换为万为单位,我最新没加ltrim(rtrim()),后来报错,在加上的
#9
select cast((rtrim(ltrim('15.44'))) as numeric(6,2))/10000
#10
ltrim(rtrim())只是把15.44左右两边的空格去掉了,对你报错没有帮助。
如果不想要,那SQL就是这样:
如果不想要,那SQL就是这样:
select cast((convert(float,15.44)/10000) as numeric(6,6))
#11
select cast(rtrim(ltrim('15.44')) as numeric(6,2))/10000