COMPRESS Function
Returns a character string with specified characters removed from the original string.
| Categories: | Character |
| CAS | |
| Restriction: | This function is assigned an I18N Level 0 status, and is designed for SBCS data. Do not use this function to process DBCS or MBCS data. For more information, see Internationalization Compatibility. |
| Note: | This function supports the VARCHAR type. |
| Tip: | DBCS equivalent function is KCOMPRESS. |
Syntax
Required Argument
source
specifies a character constant, variable, or expression from which specified characters are removed.
Optional Arguments
characters
specifies a character constant, variable, or expression that initializes a list of characters.
modifier
specifies a character constant, variable, or expression in which each non-blank character modifies the action of the COMPRESS function. Blanks are ignored. The following characters can be used as modifiers:
| a or A | adds alphabetic characters to the list of characters. |
| c or C | adds control characters to the list of characters. |
| d or D | adds digits to the list of characters. |
| f or F | adds the underscore character and English letters to the list of characters. |
| g or G | adds graphic characters to the list of characters. |
| h or H | adds a horizontal tab to the list of characters. |
| i or I | ignores the case of the characters to be kept or removed. |
| k or K | keeps the characters in the list instead of removing them. |
| l or L | adds lowercase letters to the list of characters. |
| n or N | adds digits, the underscore character, and English letters to the list of characters. |
| o or O | processes the second and third arguments once rather than every time the COMPRESS function is called. Using the O modifier in the DATA step (excluding WHERE clauses), or in the SQL procedure, can make COMPRESS run much faster when you call it in a loop where the second and third arguments do not change. |
| p or P | adds punctuation marks to the list of characters. |
| s or S | adds space characters (blank, horizontal tab, vertical tab, carriage return, line feed, form feed, and NBSP ('A0'x, or 160 decimal ASCII) to the list of characters. |
| t or T | trims trailing blanks from the first and second arguments. |
| u or U | adds uppercase letters to the list of characters. |
| w or W | adds printable characters to the list of characters. |
| x or X | adds hexadecimal characters to the list of characters. |
Details
Length of Returned Variable
The Basics
|
Number of Arguments
|
Result
|
|---|---|
|
only the first argument, source
|
All blanks have been
removed from the argument. If the argument is completely blank, then
the result is a string with a length of zero. If you assign the result
to a character variable with a fixed length, then the value of that
variable will be padded with blanks to fill its defined length.
|
|
the first two arguments, source and chars
|
All characters that
appear in the second argument are removed from the result.
|
|
three arguments, source, chars,
and modifier(s)
|
The K modifier (specified
in the third argument) determines whether the characters in the second
argument are kept or removed from the result.
|
compress(source, "1234567890"); compress(source, , "d");
compress(source, "1234567890+-"); compress(source, "+-", "d");
Examples
Example 1: Compressing Blanks
|
SAS Statement
|
Result
|
|---|---|
|
|
----+----1 |
a='AB C D '; b=compress(a); put b; |
ABCD |
Example 2: Compressing Lowercase Letters
|
SAS Statement
|
Result
|
|---|---|
|
|
----+----1----+----2----+----3 |
x='123-4567-8901 B 234-5678-9012 c'; y=compress(x, 'ABCD', 'l'); put y; |
123-4567-8901 234-5678-9012 |
Example 3: Compressing Space Characters
|
SAS Statement
|
Result
|
|---|---|
|
|
----+----1 |
x='1 2 3 4 5'; y=compress(x, , 's'); put y; |
12345 |
Example 4: Keeping Characters in the List
|
SAS Statement
|
Result
|
|---|---|
|
|
----+----1 |
x='Math A English B Physics A'; y=compress(x, 'ABCD', 'k'); put y; |
ABA |
Example 5: Compressing a String and Returning a Length of 0
|
SAS Statement
|
Result
|
|---|---|
|
|
----+----1 |
x=' '; l=lengthn(compress(x)); put l; |
0 |