Coldfusion cfscript和queryExecute()使用like而不是equals
我很好奇在cfscript函数中使用queryExecute()时,这是否是使用like运算符的正确方法Coldfusion cfscript和queryExecute()使用like而不是equals,coldfusion,cfml,Coldfusion,Cfml,我很好奇在cfscript函数中使用queryExecute()时,这是否是使用like运算符的正确方法 if( len(arguments?.lastName) ){ local.sqlWhere & = " AND t_lastname LIKE :lName"; local.sqlParams.lName = { value : arguments.lastName & '%', cfsqltype:'cf_sql_varchar'}; }; 它只是像一个
if( len(arguments?.lastName) ){
local.sqlWhere & = " AND t_lastname LIKE :lName";
local.sqlParams.lName = { value : arguments.lastName & '%', cfsqltype:'cf_sql_varchar'};
};
它只是像一个带&'%'的字符串一样附加吗?我刚刚讨论了你的问题。在coldfusion&symbol中,始终将两个字符串连接在一起。所以我们不能这样使用。这里我为您编写了一些示例代码,请检查一下。我希望写一个基于脚本的查询会更有帮助
local.MyQry = "SELECT * FROM Users WHERE 1=1 ";
我从你那里用过同样的条件。不确定你的情况
if( len(arguments?.lastName) ){
local.MyQry &= " AND Email like :email"
}
这里,如果条件为true,则将查询与前一个查询连接起来。并提到:(冒号,我们将用作queryparam)
您可以根据您的场景在此处指定%
符号。例如%#参数。电子邮件#
。或%#参数。电子邮件%
我希望这会对你有更多帮助。谢谢你的回答。有趣的是,在CF2016上,我的示例代码也能按预期工作,所以任何一种方式都能工作。是的。通配符必须是值的一部分。事实上,它在一个结构内没有区别。最终,它只是将变量和字符串文字连接起来。所以结果是一样的。可能重复的
local.qry = new Query( datasource = 'your DB name' , sql = Local.MyQry);
if( len(arguments?.lastName) ){
local.qry.addParam( name="email", value="%#Arguments.email#%", cfsqltype="cf_sql_varchar");
}
return local.qry.execute();