【发布时间】:2012-12-25 13:12:23
【问题描述】:
是否可以在 ColdFusion cfscript 查询中的 SQL LIKE 语句中使用通配符?
一个不起作用的例子:
local.q = new Query();
local.q.setDatasource(variables.dsn);
local.q.addParam(name='lastname', value='%' & arguments.lastname, cfsqltype="cf_sql_varchar");
local.qString = 'SELECT name FROM users WHERE lastname LIKE :lastname';
local.q.setSQL(local.qString);
local.result = local.q.execute().getResult();
我也试过这些,但没有用:
local.qString = 'SELECT name FROM users WHERE lastname LIKE %:lastname';
local.qString = "SELECT name FROM users WHERE lastname LIKE '%:lastname'";
更新:
我使用的是 MS SQL Server 2008。
查询在 SQL Server Mgmt Studio 中运行良好...我认为这与如何在 cfscript 标记中格式化查询有关?
【问题讨论】:
-
您的 DBMS 是否可能不支持使用
%作为第一个字符的LIKE? -
这在 MS SQL 中运行良好。我倾向于按照亨利的思路认为这是不支持的。
-
“没用”含糊不清。这是什么意思?你收到错误了吗?你没有得到预期的结果吗?如果您没有得到预期的结果,您是否在 ColdFusion 之外尝试过以帮助隔离问题?
-
在 MSSQL 中使用标签
<cfqueryparam value="%#arguments.lastname#">是正确的语法。看起来像你想要做的,所以你的 dbms 可能不支持这个 -
顺便说一句,因为很多事情都是特定于数据库的,所以总是包括数据库类型和版本以及
sql问题。当人们不必猜测您使用的是哪种口味时,您将获得更快、更准确的答案:)
标签: sql sql-server sql-server-2008 coldfusion