不幸的是,我不是一個編碼器......我以前使用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
的條件。您的使用情況與使用'='沒有區別。 – StilesCrisis
你的意思是結合CASE,或者我可以使用更短的格式,如(PROD_LONG_NM LIKE'xxxx','xxxxxx')。 SAS手冊有一個例子:job_code像'xxx'; – user3791254
「LIKE」關鍵字允許您使用通配符,如'%'和'_'。如果你不使用通配符,它不會比'='好。手冊可能假設你已經知道SQL通配符如何工作。 – StilesCrisis