在 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
我正在尝试合并 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