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
我相信您正在寻找带有 '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;
我正在从 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
我相信您正在寻找带有 '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;