首先,我需要提及的是,我当前的 sybase 数据库版本是 Adaptive Server Enterprise 12.5.4。我的目标是通过 sybase 转换函数将 float 数据类型转换为 varchar
,以便concat
其中几种变量、格式并存储为字符串类型。
不幸的是,事实并非如此。仅使用 convert(varchar(20), float_var)
或 cast()
函数无法正确返回精确值。
例如,...
declare @float_var float
begin
select @float_var =345.1237 --from table actually
select convert(varchar(20),@float_var) --return 345.1236999999
end
返回的错误字符串结果偶尔会带有 99999
或 00001
后缀。
我尝试了很多功能,包括指定精度,但仍然有几种情况不起作用。 sybase 内部函数并不完全适用于它。
我认为这是使用 Sybase DB 时的一个普遍问题,但在搜索中发现的答案很少。根据我过去的经验,Sybase存储过程玩家总是在运行时具有一定的容忍度,并在遇到错误时进行内部修复。这个问题让我很困惑 Sybase 内部是如何工作的。任何建议将不胜感激,提前致谢。
最佳答案
对此有几种可能的解决方案。
首先,我们尝试将 float 转换为十进制,然后再转换为 varchar。
select cast(cast(@float_var as decimal(13,4)) as varchar)
或者,这就是我的 ASE 内存可能会让我有点失败的地方,就是使用 STR 函数,如下所示:
Select ltrim(str(@float_var, 25, 5))
您必须将输出修剪为 STR 函数,在结果左侧填充空格
关于sql - Sybase 将问题从 float 转换为 varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638758/