2015-06-01 73 views
0

不幸的是,我不是一個編碼器......我以前使用CASE語句,但不是與「LIKE」組合使用。我不確定我的問題是否與CASE或其他問題有關。使用CASE和LIKE來評估 - 邏輯問題

我正在使用proc sql(SAS)來識別已購買特定產品的公司定義的案例以及PROD_LONG_NM中的單詞。這將是每個COMPANY和PROD-LONG_NM組合所必需的一系列聲明。

任何符合定義的案例都會被標記出來,然後可以被排除在剩餘陳述的進一步考慮之外 - 如果他們不符合定義,那麼他們需要在隨後的陳述中被考慮,直到他們確實符合...

例如,此語句運行時沒有(語法)錯誤,但在邏輯上沒有找到任何情況,直到fire_smbiz_conv,然後不是所有的情況。最後6所陳述拿起所有的情況下,不遺漏了什麼應該被以前的CASE拿起/ LIKE語句:

case when company='MUTUAL FUNDS' and (PROD_LONG_NM LIKE '401') or (PROD_LONG_NM LIKE 'SEP') or (PROD_LONG_NM LIKE 'SIMPLE') 
      then 1 else 0 end as mf_smbiz_conv, 

case when company='BANK' and (PROD_LONG_NM LIKE 'BUSINESS') 
      then 1 else 0 end as bk_smbiz_conv, 

case when company='AUTO' and (PROD_LONG_NM LIKE 'COMMERCIAL') or (PROD_LONG_NM LIKE 'ENOL') or (PROD_LONG_NM LIKE 'BUSINESS') 
      then 1 else 0 end as auto_smbiz_conv, 

case when company='FIRE' and (PROD_LONG_NM LIKE 'BUSINESS') or (PROD_LONG_NM LIKE 'COMMERCIAL') or (PROD_LONG_NM LIKE 'CONTRACTORS') 
      or (PROD_LONG_NM LIKE 'RANCH') or (PROD_LONG_NM LIKE 'FIDELITY') or (PROD_LONG_NM LIKE 'RENTAL') 
      or (PROD_LONG_NM LIKE 'SURETY') or (PROD_LONG_NM LIKE 'WORKERS') 
      then 1 else 0 end as fire_smbiz_conv, 

    case when company='AUTO'   then 1 else 0 end as oth_auto_conv, 
    case when company='FIRE'   then 1 else 0 end as oth_fire_conv, 
    case when company='LIFE'   then 1 else 0 end as oth_life_conv, 
    case when company='HEALTH'   then 1 else 0 end as oth_health_conv, 
    case when company='MUTUAL FUNDS' then 1 else 0 end as oth_mf_conv, 
    case when company='BANK'   then 1 else 0 end as oth_bank_conv 
+0

的條件。您的使用情況與使用'='沒有區別。 – StilesCrisis

+0

你的意思是結合CASE,或者我可以使用更短的格式,如(PROD_LONG_NM LIKE'xxxx','xxxxxx')。 SAS手冊有一個例子:job_code像'xxx'; – user3791254

+0

「LIKE」關鍵字允許您使用通配符,如'%'和'_'。如果你不使用通配符,它​​不會比'='好。手冊可能假設你已經知道SQL通配符如何工作。 – StilesCrisis

回答

0

它看起來像你使用LIKE關鍵字當你真正的意思是說CONTAINS

0

認沽%和前值條件之後,也通常是很好的低通()在球場上,寫你沒有正確使用LIKE反正在小寫