2017-03-01 638 views
3

我正在从SQL Server转换到SAS。SAS字符串比较

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

是SAS到目前为止我不得不每次比较STRIP和UPPER每串。

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

我的Google-Fu失败了我。

回答

4

我相信你正在寻找的 '我' 修饰的比较功能(忽略大小写)。当这返回一个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; 
3

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

'/ ABC/I' 在任何情况下匹配与串 'ABC' 什么(因为关闭之后 'I'/)

使用PRXMATCH作为一个例子:

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

将返回1,因为这是字符串出现的位置。

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

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