Сравнение строк SAS

Я перехожу с SQL Server на SAS.

В SQL-сервере мы могли бы избежать сравнения строк, где 'abc' = 'aBc' было бы истинным.

Является ли SAS до сих пор мне приходилось STRIP и UPPER каждую строку при каждом сравнении.

Есть ли параметр, который можно установить, чтобы разрешить «abc» = «aBc» быть правдой?

Мой Google-Fu подвел меня.


person Ben    schedule 01.03.2017    source источник


Ответы (2)


Я полагаю, что вы ищете функцию сравнения с модификатором «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;
person Christopher Anderson    schedule 01.03.2017

Вы можете попробовать функции PRX, которые используют регулярные выражения Perl.

'/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

person M_CE_A    schedule 01.03.2017