我有一个小问题,我只是不明白,问题是什么以及如何解决它,例如我有一个 Coldfusion 变量#account_code#
,首先,这段代码如下所示:100.001.001
(当然有很多)我有这个变量的一些值,比如sum(nettotal)
和我按此分组的 cfquery#account_code#
,我想要的只是设置这些代码的列表,因此我定义列表,例如<cfset code_list='100.001.001,100.001.002'>
并在查询中:account_code in (#code_list#)
我也试过这个account_code in ('#code_list#')
但它却给出了错误,它说“.001”附近的语法不正确。据我了解,我需要以某种方式替换这些点,并定义没有它们的代码 id。谢谢大家的帮助!我真的很感激!
如果我理解你的问题实际上是如何正确使用 SQL IN 子句。
SQL IN 子句采用一个值列表,如果这些值是数字,则不需要用引号引起来,但是您的代码是字符串,因此每个值都需要用引号引起来
select * from tbl
where id in ('100.001.001','100.001.002')
在 ColdFusion 中,正确的方法是使用 和 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 注入攻击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)