我有一个号码,我试图加入varchar,我不在乎是否会被截断。
我的问题是我不断收到这些错误,具体取决于我的尝试:
字符串或二进制数据将被截断。
varchar类型的算术溢出错误,值= 0.000052
以下是我目前的尝试:
declare @a as varchar(10), @b as varchar(10), @c as varchar(10)
set @a =cast(@b as float) / cast(@c as float)
DECLARE @temp TABLE
(
[read] varchar(20),
[percent] varchar(10)
)
insert into @temp ([read],[percent])
VALUES('text', @a)
我还尝试了以下第二行的一些内容:
set @a = cast( cast(@b as float) / cast(@c as float) as varchar())
一个奇怪的是,它在某些时候有效,但并非在所有时间都有效。我已经发现它只有在@a
足够大且不是负面时才有效。当它是负数或小数时,我会得到一些上述错误。
答案 0 :(得分:3)
如果您想将浮点数转换为字符串,我强烈推荐使用str()
函数,该函数记录为here。
在您的情况下,它看起来像:
set @a = str( cast(@b as float) / cast(@c as float), 10, 4)
其中10
和4
是您想要的比例和精度。
顺便说一句,在SQL中使用varchar()
时,应始终包含长度。不依赖于默认值,因为它们可以根据表达式的使用位置而改变。