Coldfusion - 逗号分隔符,内容为逗号

时间:2015-08-03 06:24:09

标签: sql list coldfusion

我正在使用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'内部有逗号时,这是完美的除外。 有任何建议如何解决?

2 个答案:

答案 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()

执行它