SAS 字符串比较

SAS String comparison

我正在从 SQL 服务器过渡到 SAS。

在 SQL 服务器中,我们可以进行字符串比较,其中 'abc ' = 'aBc' 为真。

到目前为止,我必须在每次比较时对每个字符串进行 STRIP 和 UPPER。

是否有一个选项可以设置为允许 'abc ' = 'aBc' 为真?

我的Google-Fu让我失望了。

您可以尝试使用 Perl 正则表达式的 PRX 函数。

'/abc/i' 将在任何情况下匹配字符串 'abc' 的任何内容(因为关闭 / 后的 'i')

以PRXMATCH为例:

prxmatch('/abc/i', 'aBc') 

将 return 1 因为这是字符串出现的位置。

关于正则表达式的更多信息:https://www.cs.tut.fi/~jkorpela/perl/regexp.html

SAS 中的 PRX: http://documentation.sas.com/?docsetId=lefunctionsref&docsetVersion=3.1&docsetTarget=n0bj9p4401w3n9n1gmv6tfshit9m.htm&locale=en

我相信您正在寻找带有 'i' 修饰符(用于忽略大小写)的比较函数。当这个 returns 为 0 时,就有一个匹配项。

(参见此处的第 70 页:http://support.sas.com/publishing/pubcat/chaps/59343.pdf

data a;
input string1 $ string2 $;
datalines;
abc aBc
cba CBA
AbC ABC
AC  AbC
BCA CAb
;
run;

data b;
set a;
c = compare(string1,string2);
d = compare(string1,string2,'i');
run;
proc print noobs;
where d = 0;
var string1 string2;
run;