有没有办法避免以下代码的警告?我对关闭警告的系统选项不太感兴趣,而是我很好奇是否有更好的方法来编写此查询。
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;
答案 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;