QueryExecute():如何在LIKE子句中使用SQL通配符%搜索?

时间:2018-07-24 18:09:49

标签: 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>

当我运行它时,它显示为0个查询,但是当我对其进行硬编码并将查询的:id%部分更改为xyz123%时,它将起作用。我只是不知道应该如何传递带有通配符的LIKE('XXXX%'),或者看起来是否正确。有什么想法吗?

1 个答案:

答案 0 :(得分: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>