在 PROC_SQL 中使用 COALESCE 函数截断

Truncation with COALESCE function in PROC_SQL

我正在尝试合并 PROC SQL 中的两个数据项,但正在截断。当我在数据集中尝试相同的过程时,我也会被截断,但方式不同。考虑以下因素:

data test;
var_a = '111111';
var_b = 12345678;
run;

proc sql;
create table test2 as 
select coalesce(input(var_1, 6.), var2) as var3 format = best14.
from test;
quit;

这会生成一个数值字段 111111,这不是我想要的。有趣的是,如果我在一个数据步骤中完成所有操作并按如下方式修改我的代码:

data test;
format var3 best14.
var_a = '111111';
var_b = 12345678;
var3 = coalesce(input(var_1, 6.), var2);
run;

我得到一个包含 12345678 的数字字段输出。我真正想要的是一个 SQL 步骤,它将给我一个包含 11111112345678 的数字字段。

有人可以告诉我为什么在使用 COALESCE 函数时会发生这种截断吗?

谢谢

我认为您误解了 coalesce() 函数。 coalesce() returns 您的值列表中的第一个非缺失值,因此“111111”在这种情况下是正确的。

我想你想要的是 cat 函数之一,cats()

proc sql;
  create table test2 as 
  select input(cats(var1,var2),14.) as var3 format = best14.
  from test;
quit;

合并 > http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002206368.htm

猫 > http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002256540.htm