定义分组项的id列表

时间:2012-05-03 07:18:19

标签: coldfusion cfquery cfoutput

我有一个小问题,我只是无法理解,问题是什么以及我如何解决它,我有一个coldfusion变量,例如#account_code#,首先,这段代码看起来像这样:100.001.001(有很多cource)我有一些这个变量的值,比如sum(nettotal)和cfquery i按这个#account_code#分组,我只想设置这些代码的列表,因此我定义了列表,例如<cfset code_list='100.001.001,100.001.002'>,在查询中:account_code in (#code_list#)我也尝试了这个account_code in ('#code_list#')但是它给出了错误,它说明了不正确的语法” 0.001' 。据我所知,我需要以某种方式替换这些点,并在没有它们的情况下定义代码id。谢谢大家的帮助!我非常喜欢它!

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题确实是如何正确使用SQL IN子句的。

SQL IN子句采用值列表,如果这些值是数字,则不需要引用它们,但是您的代码是字符串,因此需要引用每个值

select * from tbl
where id in ('100.001.001','100.001.002')

在ColdFusion中,正确的方法是使用&lt; cfqueryparam&gt; with list = true

<cfset code_list='100.001.001,100.001.002'>
<cfquery name="qSomething" ...>
select * from tbl
where id in (
  <cfqueryparam list="true" 
    value="#code_list#"
    cfsqltype="cf_sql_varchar" />
)
</cfquery>

这会将您的列表转换为查询中的多个参数,如果您的code_list实际上是通过表单或url变量传入的,则有助于保护您免受SQL注入攻击。