QueryExecute():如何使用带有LIKE子句的SQL通配符%搜索?

JNe*_*tne 1 coldfusion coldfusion-11 coldfusion-2016

我是ColdFusion的新手,我正在尝试查询并在cfscript中使用它.我不能在这里使用实际代码,但这里是一个通用的SQL查询,希望对此有所帮助.这是一个旧脚本,我试图将它从cfquery标签更改为cfscript标签.

<cfscript>
    sqlCF = queryExecute("SELECT primarykey FROM names, personnel  
                          WHERE name.primaykey = personnel.primarykey 
                          AND ( upper(personnel.ID LIKE upper(':id%') OR 
                                upper(personnel.userID) LIKE upper(':id%')
                              )
                        , {id={value = "xyz123", cfsqltype="cf_sql_varchar}}
                        , {datasource=person"}); 

writeDump(sqlCF);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它显示为0查询,但是当我硬编码并将:id%查询的一部分更改xyz123%为它的工作值时.我只是不知道带有外卡标志的LIKE('XXXX%')应该如何传递,或者如果这看起来是正确的.有任何想法吗?

Twi*_*len 6

您希望将通配符附加到参数中的字符串,而不是查询字符串中.另外请注意,当我使用参数时,我没有将参数包装在引号中.

<cfscript>
    sqlCF = queryExecute("
        select primarykey
        from names, personnel
        where name.primaykey = personnel.primarykey
        and (
            upper(personnel.ID) LIKE upper(:id)
            or 
            upper(personnel.userID) LIKE upper(:id)
        )
    ",{
        id={
            value = "xyz123%",
            cfsqltype="cf_sql_varchar"
        }
    },
    {datasource="person"});
</cfscript>
Run Code Online (Sandbox Code Playgroud)