使用CASE和LIKE进行评估——逻辑问题

Using CASE and LIKE to evaluate - logic issues

不幸的是我不是编码员......我以前使用过 CASE 语句但没有与 "LIKE" 结合使用。我不确定我的问题是否与 CASE 或其他问题有关。

我正在使用 proc sql (SAS) 来识别已购买公司定义的特定产品的案例以及 PROD_LONG_NM 中的文字。这将是每个 COMPANY 和 PROD-LONG_NM 组合所必需的一系列语句。

任何符合定义的案例都将被标记出来,然后可以将其排除在对其余陈述的进一步考虑之外——如果它们不符合定义,则需要在后续陈述中考虑它们,直到它们满足一个……

例如,此语句运行时没有(语法)错误,但在逻辑上直到 fire_smbiz_conv 才发现任何情况,然后不是所有情况。最后六个语句选择了所有情况,而没有遗漏之前 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

当您真正想说 CONTAINS 时,您似乎在使用 LIKE 关键字。

在值条件前后放置%,通常在字段上传递 lower() 并以小写形式写条件