Returns the position of the leftmost character by which two strings differ , or returns 0 if there is no difference
Category: Character
COMPARE ( string-1 , string-2 <, modifiers >)
string-1
specifies a character constant, variable, or expression.
string-2
specifies a character constant, variable, or expression.
modifiers
specifies a character string that can modify the action of the COMPARE function. You can use one or more of the following characters as a valid modifier:
i or I | ignores the case in string-1 and string-2 . |
l or L | removes leading blanks in string-1 and string-2 before comparing the values. |
n or N | removes quotation marks from any argument that is an n-literal and ignores the case of string-1 and string-2 . |
: ( colon ) | truncates the longer of string-1 or string-2 to the length of the shorter string, or to one, whichever is greater. If you do not specify this modifier, the shorter string is padded with blanks to the same length as the longer string. |
TIP: COMPARE ignores blanks that are used as modifiers.
The order in which the modifiers appear in the COMPARE function is relevant.
'LN' first removes leading blanks from each string, and then removes quotation marks from n-literals.
'NL' first removes quotation marks from n-literals, and then removes leading blanks from each string.
In the COMPARE function, if string-1 and string-2 do not differ, COMPARE returns a value of zero. If the arguments differ
the sign of the result is negative if string-1 precedes string-2 in a sort sequence, and positive if string-1 follows string-2 in a sort sequence
the magnitude of the result is equal to the position of the leftmost character at which the strings differ.
The following example compares two strings by using the COMPARE function.
options pageno=1 nodate ls=80 ps=60; data test; infile datalines missover; input string1 $char8. string2 $char8. modifiers $char8.; result=compare(string1, string2, modifiers); datalines; 1234567812345678 123 abc abc abx xyz abcdef aBc abc aBc AbC i abc abc abc abc l abc abx abc abx l ABC 'abc'n ABC 'abc'n n ''n n ''n nl ''n ln ; proc print data=test; run;
The following output shows the results.
The SAS System 1 Obs string1 string2 modifiers result 1 12345678 12345678 0 2 123 abc 1 3 abc abx 3 4 xyz abcdef 1 5 aBc abc 2 6 aBc AbC i 0 7 abc abc 1 8 abc abc l 0 9 abc abx 2 10 abc abx l 3 11 ABC 'abc'n 1 12 ABC 'abc'n n 0 13 ''n n 1 14 ''n nl 1 15 ''n ln 0
The following example uses the : (colon) modifier to truncate strings.
options pageno=1 nodate ls=80 pagesize=60; data test2; pad1=compare('abc','abc '); pad2=compare('abc','abcdef '); truncate1=compare('abc','abcdef',':'); truncate2=compare('abcdef','abc',':'); blank=compare('','abc', ':'); run; proc print data=test2 noobs; run;
The following output shows the results.
The SAS System 1 pad1 pad2 truncate1 truncate2 blank 0 4 0 0 1
Functions and CALL Routines:
'COMPGED Function' on page 449
'COMPLEV Function' on page 454
'CALL COMPCOST Routine' on page 342