Hello @metallon,
To get a definitive answer as to what kind of "blank" character you have in the strings in question, you should print (a few of) them with $HEXw. format (with w >= twice the length of the string).
Example:
data _null_;
s1='123 456';
c1=compress(s1,,'s');
s2='123 456'; /* The "blank" here is a protected blank, 'A0'x! */
c2=compress(s2,,'s');
put (s: c:) (=);
put (s: c:) (= $hex14.);
run;
Result (colors added):
s1=123 456 s2=123 456 c1=123456 c2=123 456
s1=31323320343536 s2=313233A0343536 c1=31323334353620 c2=313233A0343536
(Surprisingly, my SAS 9.4 (TS1M2) does not compress the protected blank, contrary to what is stated in the documentation.)
Then you can use the appropriate arguments of the COMPRESS function to get rid of these blank characters.
Alternatively, @BrunoSilva's suggestion to use a positive list of characters to keep (such as "only digits") can be helpful in this situation. You have to include the k ("keep") modifier, though:
compress('0802 12',,'kn')
... View more