首页 > 解决方案 > 根据以值结尾的值过滤 where 条件?

问题描述

熟悉使用like函数过滤字符值,是否可以对数值做同样的事情?

Col A     Col B
1         3214.22 
2         4432.11
3         11.65
4         342.98

例如,以下适用于字符值:

data test;
set table (Where = (Col B like '%.22));
run;

标签: sas

解决方案


您可以执行计算以确定比较所需的小数部分。

data want;
  set have;
  where round ( abs(b) - int(abs(b)), 1e-8 ) = 0.22;  /* 1e-6 is rounding level, used here as a fuzz factor */
run;

或者,根据@whymath,比较函数返回的数值的字符表示,例如CATSor PUTN

where cats(b) like '%.22'; /* character value being compared depends on BESTw. chosen by CATS */
where put(b,best15.2) like '%.22';  /* match fractional parts >= .215 to < .225 */

推荐阅读