【问题标题】:Why in SAS data step where works but not if为什么在 SAS 数据步骤中有效但不是
【发布时间】:2022-08-14 00:16:15
【问题描述】:

工作代码:

data t2;

 set t1; 
 
 where a like \"%SR\";

run;

代码错误:

data t2;

 set t1; 

 if a like \"%SR\";

run;

错误信息:
错误 388-185:需要算术运算符。 错误 202-322:选项或参数无法识别,将被忽略。

它抱怨“喜欢”

有理想吗?

  • 你不能喜欢 If 语句中的 Like 运算符。你想要一个替代品吗?

标签: sas


【解决方案1】:

LIKE 不是 SAS 代码可以理解的运算符。它在 WHERE 中起作用的唯一原因是因为 WHERE 语句支持诸如 LIKE 和 BETWEEN 之类的 SQL 语法,以便更容易地将 WHERE 条件推送到远程数据库中。

使用其他方法来测试最后两个字母是否为 SR。这里有两种方法。

if 'SR' = substrn(a,length(a)-1);
ir 'RS' =: left(reverse((a)) ;

【讨论】:

    【解决方案2】:

    最类似的解决方案是使用prxmatch

    data t2;
     set t1; 
     if prxmatch("/.*SR/ios",a);
    run;
    

    请注意,这比使用 LIKE 的 WHERE 慢得多,如果有合理的方法(如示例中所示),Tom 的解决方案会更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多