【发布时间】:2013-01-18 22:34:51
【问题描述】:
这是一个有效的查询,用于返回用户表中用单引号括起来的电子邮件。
SELECT '''' +email + '''' as email
FROM users
where fname = @fname
然而,当我尝试在这样的 cfscript (cf9) 查询中执行此操作时:
var q = new Query(datasource="warewithal");
q.setSQL("SELECT '''' +email + '''' as email
FROM users where firstName= :firstName ");
q.addParam(name="firstName", value=trim(firstName), cfsqltype="cf_sql_varchar");
我最终得到的是
Email
+email+
当我期望的时候(并通过在分析器中运行查询得到)
Email
'bozo@clowns.com'
cfscript 正在执行 perserveSingleQuote 并且不允许我将单引号添加到输出中。
这是一个错误还是我做错了什么?
【问题讨论】:
-
你试过用两个单引号而不是 4 个吗? 3、5 或 6 个怎么样?
-
您使用的是什么数据库类型? (将其包含在查询相关问题的标签中总是好的)。
-
(编辑)虽然它肯定与在
Query.cfc中使用preserveSingleQuotes有关,但我在SQL Server 上测试您的代码时得到了不同的结果(数据库语法错误)。因此,尚不清楚它是否是一个错误 - 或者是否是 - 是否严格来说是一个 CF 错误。不知道为什么需要这样做,但作为一种解决方法,您可以使用 CF 代码(更典型)将其添加到表示层中,或者可能使用数据库的字符串函数来生成单引号。即在 SQL Server 中:SELECT char(39) + email + char(39) AS Email ... -
我试图理解为什么您需要将结果用单引号括起来。当您需要输出时,在电子邮件地址周围加上单引号可能更容易,不是吗?
-
你也可以尝试使用你的 DBMS 内置的连接函数,比如 SQL server 中的 concat()
标签: coldfusion coldfusion-9 coldfusion-10