我有浮点值来删除空格。
以下是示例。
在SQL Server中:在SQL Server中,我使用了以下脚本。
DECLARE @f1 FLOAT = 74.3658319091568;
SELECT REPLACE(@f1,CHAR(160),'');
- 输出
74.3658
PostgreSQL :在postgresql中我使用了以下脚本。
do
$$
DECLARE
v_f1 float = '74.3658319091568';
v_f3 text;
BEGIN
SELECT regexp_replace(v_f1::varchar, '\s+$', '') INTO v_f3;
Raise info '%',v_f3;
END;
$$
- 输出
INFO: 74.3658319091568
当我进入SQL Server时,我没有得到结果。
答案 0 :(得分:1)
您的Postgres float
是real
的同义词,其6 digits precision。在SQL Server中,默认float
具有15 digits precision。
你可以使用Postgres double precision
,它也有15位精度。没有具有6位精度的SQL Server类型。
注意:将float
转换为文本类型时,通常不会获得任何空格。因此,替换空格是没用的(但也无害。)
注意2:在SQL Server中,使用固定长度char
时,将删除尾随空格。所以REPLACE(@f1,CHAR(160),'')
用空字符串替换空字符串。
答案 1 :(得分:1)
你可以试试这种方式
do
$$
DECLARE
v_f1 float8 = '74.3658319091568';
v_f3 text;
BEGIN
SELECT to_char( v_f1, 'FM999999.0000') INTO v_f3;
Raise info '%',v_f3;
END;
$$
FM
(前缀) - 填充模式(抑制前导零和填充空白)