我正在使用SQL数据构建列表,我正在尝试将列表的每个值设置为:'value1',value2','value,4'
,依此类推。
我的问题是我使用的是这段代码:
(
SELECT COUNT(ns.ticket)
FROM ns_trade ns
WHERE ns.[login]=mt.[login]
AND
<cfif qGetCommentsAccounting.recordCount gt 0>
ns.COMMENT IN ('#listChangeDelims(qGetCommentsAccounting.list_comments, "','")#')
<cfelse>
1=2
</cfif>
)as no_of_tickets_accounting
当我的值在'value,4'
内部有逗号时,这是完美的除外。
有任何建议如何解决?
答案 0 :(得分:2)
如果两个查询都在同一个数据库上运行,那么将它们放在一起就会更加 KISS 。通常,您应该尝试在数据库中尽可能多地进行操作。
SELECT
COUNT(ns.ticket)
FROM
ns_trade ns
WHERE
ns.[login] = mt.[login]
AND
ns.COMMENT IN
(
SELECT
comment
FROM
tbl_comment
WHERE
report_type = <cfqueryparam value="#arguments.type#" cfsqltype="cf_sql_varchar">
AND
report_id = <cfqueryparam value="#arguments.report_id#" cfsqltype="cf_sql_integer">
)
答案 1 :(得分:0)
我修复了将查询更改为:
的问题<cfquery name="qGetComments" datasource="#application.dsn#">
SELECT (STUFF((SELECT ',' +CHAR(39) +CAST(comment as varchar(50)) +CHAR(39)
FROM tbl_comment
WHERE report_type = <cfqueryparam value="#arguments.type#" cfsqltype="cf_sql_varchar">
AND report_id = <cfqueryparam value="#arguments.report_id#" cfsqltype="cf_sql_integer">
FOR XML PATH('')),1, 1, '')) as list_comments
</cfquery>
其中CHR(39)是单引号,后来是另一个查询(位于cfsavecontent
内):
(SELECT COUNT(ns.ticket)
FROM ns_trade ns
WHERE ns.[login]=mt.[login]
AND <cfif qGetCommentsAccounting.recordCount gt 0> ns.COMMENT IN (#qGetCommentsAccounting.list_comments#)
<cfelse>
1=2
</cfif>)as no_of_tickets_accounting
并使用PreserveSingleQuotes()