在SAS PROC SQL中搜索带有撇号的字符串

时间:2015-06-25 22:31:48

标签: sas proc-sql

有没有办法避免以下代码的警告?我对关闭警告的系统选项不太感兴趣,而是我很好奇是否有更好的方法来编写此查询。

data quotey; 
input string $9.;
cards;
shouldn't
wouldn't
couldn't
dont
won't
;
run;
proc print ; run;

ods html close; ods html ;


title 'Hmmm...';
proc sql ; 
select * from quotey 
where string like "%dn't%"
;quit;

2 个答案:

答案 0 :(得分:1)

您可以通过几种不同的方式来处理此问题,但最简单的方法是使用proc sql ; select * from quotey where string contains "dn't" ; quit; 代替proc sql ; select * from quotey where string like '%dn''t%' ; quit; 。当然,这不会在所有案件中发挥作用,但它会在你的案件中发挥作用。

%nrstr

否则会有很多混乱的方法来处理它。最简单的是使用单引号(以防止宏分辨率),但是你需要加倍单引号/撇号。

proc sql ; 
select * from quotey 
where string like "%nrstr(%%)dn't%nrstr(%%)"
;quit;

您还可以通过几种方式使用%(它可以防止使用字符来解析宏)。这是一个。

ScrollView

在这里,您必须将onMeasure字符加倍(因为它用作'转义'类型)。

答案 1 :(得分:1)

还尝试使用正则表达式:

title 'Hmmm...';
proc sql ; 
select * from quotey 
where prxmatch("/dn't/",string)>1;
;quit;