SAS数据步骤中的Like运算符

SAS数据步骤中的Like运算符,sas,Sas,对于SAS数据步骤中的操作符(sql),我们是否有其他选择? 我使用下面的代码来满足我的要求。但它不起作用 IF var1 ne : 'ABC' then new_var=XYZ; 请任何人提出这方面的错误,或向我建议这种情况下的正确用法 谢谢,您可以使用查找功能,例如: data want; set sashelp.class; if find(name,'e') then new_var='Y'; run; 您可以使用find功能,例如: data want; set sas

对于SAS数据步骤中的
操作符(sql),我们是否有其他选择?
我使用下面的代码来满足我的要求。但它不起作用

IF var1 ne : 'ABC' then new_var=XYZ;
请任何人提出这方面的错误,或向我建议这种情况下的正确用法


谢谢,

您可以使用
查找功能,例如:

data want;
  set sashelp.class;
  if find(name,'e') then new_var='Y';
run;

您可以使用
find
功能,例如:

data want;
  set sashelp.class;
  if find(name,'e') then new_var='Y';
run;

您所使用的冒号运算符仅比较以带引号的字符串“ABC”开头的值。本质上,SAS比较2个值,将其截断为2个值中的最小长度。因此,如果
var1
中的所有值都超过3个字符,那么它将在与“ABC”进行比较之前将值截断为3个字符

因此,它不同于sql中的
like
函数,该函数与
%
通配符运算符结合使用,以确定是查看字符串的开头、结尾还是任意位置


要复制类似于
,您需要使用@Amir推荐的
find
index
等函数,这在这种情况下也很常用。

使用的冒号运算符只比较以带引号的字符串“ABC”开头的值。本质上,SAS比较2个值,将其截断为2个值中的最小长度。因此,如果
var1
中的所有值都超过3个字符,那么它将在与“ABC”进行比较之前将值截断为3个字符

因此,它不同于sql中的
like
函数,该函数与
%
通配符运算符结合使用,以确定是查看字符串的开头、结尾还是任意位置


要复制
like
,您需要使用@Amir推荐的
find
index
等函数,这在这种情况下也很常用。

在数据步骤中,“if”可以与“index/find/findw”一起使用,但如果要使用“like”,则必须同时使用“where”和“like”

data want;
   set sashelp.class;
   where name like 'A%';
run;

在datastep中,“if”可以与“index/find/findw”一起使用,但如果要使用“like”,则必须同时使用“where”和“like”

data want;
   set sashelp.class;
   where name like 'A%';
run;

“它不工作”不是一个有用的描述
它抛出此错误:xyz
它运行,但会产生不希望的结果,xyz
更好。特别是,在这种情况下,代码确实可以工作,尽管我感到惊讶;所以,请解释一下你想要它做的事情是什么?“它不工作”不是一个有用的描述
它抛出此错误:xyz
它运行,但会产生不希望的结果,xyz
更好。特别是,在这种情况下,代码确实可以工作,尽管我感到惊讶;所以,请解释一下它没有做什么,你希望它做什么?