SAS字符串比较

时间:2017-03-01 18:19:02

标签: sas proc-sql

我正在从SQL Server过渡到SAS。

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

到目前为止SAS是否必须在每次比较中使用STRIP和UPPER每个字符串。

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

我的Google-Fu让我失望了。

2 个答案:

答案 0 :(得分:4)

我相信您正在寻找带有'i'修饰符的比较功能(对于忽略大小写)。当这返回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;

答案 1 :(得分:3)

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

' / ABC I&#39 /;将匹配任何字符串' abc'在任何情况下(因为关闭后的' i)

以PRXMATCH为例:

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

将返回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