使用CASE和LIKE来评估 - 逻辑问题

时间:2015-06-01 15:26:49

标签: sql-like case-statement proc-sql

不幸的是,我不是编码员......我之前使用过CASE语句,但没有和#34; LIKE"结合使用。我不确定我的问题是否与CASE或其他事情有关。

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

任何符合定义的情况都会被标记,然后可以被排除在对剩余陈述的进一步考虑之外 - 如果它们不符合定义,那么它们需要在后续陈述中考虑,直到它们满足一个......

例如,此语句在没有(语法)错误的情况下运行,但在fire_smbiz_conv之前逻辑上找不到任何情况,然后不是所有情况。最后的六个语句在没有省略以前的CASE / LIKE语句应该提取的内容的情况下获取所有案例:

public static <T extends LoginPage> WebDriver getDriver(Class<T> loginClass)
{
    if (WebDriverUtil.hasQuit()) {
        log.debug("Creating new instance of driver");
        BaseTest.init();

        browser = region.getBrowser().getName();

        driver = WebDriverUtil.initDriver(browser, baseURL);
        wait = new WebDriverWait(driver, DEFAULT_TIMEOUT/1000 );
        SeleniumUtil.waitForPageLoaded(driver,DEFAULT_TIMEOUT);

        handleLogin(driver, loginClass);
    }       

    return driver;
}

private static <T extends LoginPage> void handleLogin(WebDriver driver, Class<T> loginClass)
{
    if(loginClass != null)
    {
        try {
            Constructor<T> constructor = loginClass.getDeclaredConstructor(WebDriver.class);
            try {
                T loginObj = constructor.newInstance(driver);
                loginObj.signIn(user, pass);
            } catch (InstantiationException | IllegalAccessException
                    | IllegalArgumentException
                    | InvocationTargetException e) {
                log.warn("Error instantiating object for class: " + loginClass.toString());
            }
        } catch (NoSuchMethodException e) {
            log.warn("No constructor that takes WebDriver is present on class: " + loginClass.toString());
            log.trace(e);
        } catch (SecurityException e) {
            log.warn("SecurityException present on class: " + loginClass.toString());
            log.trace(e);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

当您真的要说LIKE时,看起来您正在使用CONTAINS关键字。

答案 1 :(得分:0)

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