<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: CASE select alphanumeric data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390215#M93578</link>
    <description>&lt;P&gt;Kurt,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks, but that produces all volumes as UNKN. I need LIKE matching on alphanumeric against variable DCVVOLSR.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeff&lt;/P&gt;</description>
    <pubDate>Wed, 23 Aug 2017 12:54:26 GMT</pubDate>
    <dc:creator>G_I_Jeff</dc:creator>
    <dc:date>2017-08-23T12:54:26Z</dc:date>
    <item>
      <title>CASE select alphanumeric data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390202#M93576</link>
      <description>&lt;P&gt;I'm trying to assign a new variable based off of CASE select results. Some old code that I am trying to convert/rewrite:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;IF VOL IN:('TKDA' 'TKDB' 'TKDP' 'TKFR' 'TKDU' 'TKGI' 'TKM '   
           'TKOL' 'TKOM' 'TKOS' 'TKPL' 'TKPM' 'TKPS' 'TKWL'   
           'TKWM' 'TKWS' 'RS'   'RS41' 'TKDR' 'SFSP' 'SP00'   
           'LMD'  'TMM' 'VM' 'LHFS' 'SHFS' 'RE' 'NITC')       
   THEN TYPEVOL = 'CUST';                                     
ELSE                                                          
IF VOL IN:('CAT0' 'SFCK' 'SF2A' 'SN29' 'NF2A' 'SAG0' 'NF'     
           'TLSA' 'TLTA' 'CAT1' 'CAT2' 'CAT3' 'OF' 'ZVM' '430'
           'CAT4' 'CAT9' 'SHCD' 'SS2A' 'SS29' 'SYD1' 'SYD2'   
           'SYD3' 'SYD4' 'SYD9' 'SYI1' 'SYI2' 'SYI3' 'SYI4'   
           'SYI9' 'SYO2' 'SYPG' 'SYPL' 'SYR1' 'SYR2' 'SYI4'   
           'SYR3' 'SYR4' 'SYR9' 'SY39' 'SYR1' 'SYR2' 'SYI4'   
           'SYS'  'SF1' 'SS1' 'CV' 'SS3P' 'SYDM' 'SS4' 'DSKP')
   THEN TYPEVOL = 'SYST';                                     
ELSE                                                          
   TYPEVOL = 'UNKN';                                          &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The following is what I'm trying to do in SQL, though I am running into issue with alphnumeric comparisons:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;                                                           
 SELECT DCVVOLSR,                                                   
        CASE                                                        
         WHEN DCVVOLSR IN:('TKDA' 'TKDB' 'TKDP' 'TKFR' 'TKDU' 'TKGI'
           'TKM' 'TKOL' 'TKOM' 'TKOS' 'TKPL' 'TKPM' 'TKPS' 'TKWL'   
           'TKWM' 'TKWS' 'RS' 'RS41' 'TKDR' 'SFSP' 'SP00'           
           'LMD' 'TMM' 'VM' 'LHFS' 'SHFS' 'RE' 'NITC')              
         THEN VOLTYPE = 'CUST'                                      
         WHEN DCVVOLSR IN:('CAT0' 'SFCK' 'SF2A' 'SN29' 'NF2A' 'SAG0'
           'NF' 'TLSA' 'TLTA' 'CAT1' 'CAT2' 'CAT3' 'OF' 'ZVM'       
           'CAT4' 'CAT9' 'SHCD' 'SS2A' 'SS29' 'SYD1' 'SYD2'         
           'SYD3' 'SYD4' 'SYD9' 'SYI1' 'SYI2' 'SYI3' 'SYI4'         
           'SYI9' 'SYO2' 'SYPG' 'SYPL' 'SYR1' 'SYR2' 'SYI4'         
           'SYR3' 'SYR4' 'SYR9' 'SY39' 'SYR1' 'SYR2' 'SYI4'         
           'SYS' 'SF1' 'SS1' 'CV' 'SS3P' 'SYDM' 'SS4'               
           '430' 'DSKP')                                            
         THEN VOLTYPE = 'SYST'                                      
         ELSE VOLTYPE = 'UNKN'                                      
         END AS VOLTYPE,                                            
        SUM(DCVALLOC) AS ALLOCATED_SPACE FORMAT MGBYTES.,           
        SUM(DCVFRESP) AS FREE_SPACE FORMAT MGBYTES.,                
        SUM(DCVVLCAP) AS TOTAL_SPACE FORMAT MGBYTES.                
   FROM INPT.DCOLVOLS                                               
 GROUP BY DCVVOLSR;                                                 
QUIT;                                                               &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I've tried using the LIKE clause as well.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Aug 2017 12:36:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390202#M93576</guid>
      <dc:creator>G_I_Jeff</dc:creator>
      <dc:date>2017-08-23T12:36:39Z</dc:date>
    </item>
    <item>
      <title>Re: CASE select alphanumeric data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390208#M93577</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;                                                           
 SELECT DCVVOLSR,                                                   
        CASE                                                        
         WHEN DCVVOLSR IN ('TKDA','TKDB','TKDP','TKFR','TKDU','TKGI',
           'TKM','TKOL','TKOM','TKOS','TKPL','TKPM','TKPS','TKWL',
           'TKWM','TKWS','RS','RS41','TKDR','SFSP','SP00',
           'LMD','TMM','VM','LHFS','SHFS','RE','NITC')
         THEN 'CUST'
         WHEN DCVVOLSR IN ('CAT0','SFCK','SF2A','SN29','NF2A','SAG0',
           'NF','TLSA','TLTA','CAT1','CAT2','CAT3','OF','ZVM',
           'CAT4','CAT9','SHCD','SS2A','SS29','SYD1','SYD2',
           'SYD3','SYD4','SYD9','SYI1','SYI2','SYI3','SYI4',
           'SYI9','SYO2','SYPG','SYPL','SYR1','SYR2','SYI4',
           'SYR3','SYR4','SYR9','SY39','SYR1','SYR2','SYI4',
           'SYS','SF1','SS1','CV','SS3P','SYDM','SS4',
           '430','DSKP')
         THEN 'SYST'                                      
         ELSE 'UNKN'                                      
         END AS VOLTYPE,                                            
        SUM(DCVALLOC) AS ALLOCATED_SPACE FORMAT MGBYTES.,           
        SUM(DCVFRESP) AS FREE_SPACE FORMAT MGBYTES.,                
        SUM(DCVVLCAP) AS TOTAL_SPACE FORMAT MGBYTES.                
   FROM INPT.DCOLVOLS                                               
 GROUP BY DCVVOLSR;                                                 
QUIT;                        &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 23 Aug 2017 12:48:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390208#M93577</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-08-23T12:48:56Z</dc:date>
    </item>
    <item>
      <title>Re: CASE select alphanumeric data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390215#M93578</link>
      <description>&lt;P&gt;Kurt,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks, but that produces all volumes as UNKN. I need LIKE matching on alphanumeric against variable DCVVOLSR.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeff&lt;/P&gt;</description>
      <pubDate>Wed, 23 Aug 2017 12:54:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390215#M93578</guid>
      <dc:creator>G_I_Jeff</dc:creator>
      <dc:date>2017-08-23T12:54:26Z</dc:date>
    </item>
    <item>
      <title>Re: CASE select alphanumeric data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390294#M93597</link>
      <description>&lt;P&gt;You only have a few lengths (3/4) so why not take the the substr() of the first 3 or 4 characters and do your tests?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;case when substr(....)  in () 
    or substr(..., , 4) in () then ..

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 23 Aug 2017 15:19:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390294#M93597</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-08-23T15:19:58Z</dc:date>
    </item>
    <item>
      <title>Re: CASE select alphanumeric data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390477#M93673</link>
      <description>&lt;P&gt;There are also two other techniques&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1) Use regular expressions&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test;
input DCVVOLSR $;
datalines;
TKD
TKDA
TKDA123
V
VM
VM123
430
43
430x
;

PROC SQL;                                                           
 SELECT DCVVOLSR,                                                   
        CASE                                                        
         WHEN prxmatch("/^(TKDA|TKDB|TKDP|TKFR|TKDU|TKGI|
TKM|TKOL|TKOM|TKOS|TKPL|TKPM|TKPS|TKWL|TKWM|TKWS|RS|RS41|TKDR|SFSP|SP00|
LMD|TMM|VM|LHFS|SHFS|RE|NITC)/o", DCVVOLSR)
         THEN 'CUST'
         WHEN prxmatch("/^(CAT0|SFCK|SF2A|SN29|NF2A|SAG0|
NF|TLSA|TLTA|CAT1|CAT2|CAT3|OF|ZVM|CAT4|CAT9|SHCD|SS2A|SS29|SYD1|SYD2|
SYD3|SYD4|SYD9|SYI1|SYI2|SYI3|SYI4|SYI9|SYO2|SYPG|SYPL|SYR1|SYR2|SYI4|
SYR3|SYR4|SYR9|SY39|SYR1|SYR2|SYI4|SYS|SF1|SS1|CV|SS3P|SYDM|SS4|430|DSKP)/o", DCVVOLSR)
         THEN 'SYST'                                      
         ELSE 'UNKN'                                      
         END AS VOLTYPE
from test;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;or 2) Use an auxiliary dataset&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data types;
input DCVVOLSR $ VOLTYPE $;
datalines;
TKDA CUST
VM CUST
430 SYST
;

proc sql;
select test.DCVVOLSR, coalesce(VOLTYPE, "UNKN") as VOLTYPE
from test left join types on find(test.DCVVOLSR, types.DCVVOLSR, "T") = 1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 24 Aug 2017 01:39:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CASE-select-alphanumeric-data/m-p/390477#M93673</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-08-24T01:39:50Z</dc:date>
    </item>
  </channel>
</rss>

