sql-server-2016 - 如何在coldfusion参数化查询的“IN”子句中使用SQL IIF中的整数值列表?
问题描述
如何在参数化coldfusion查询中以这种方式在“IN”子句中使用IIF?
<cfset id_check = '95,1' />
WHERE
id IN (
IIF(
len( <cfqueryparam value="#id_check#" list="yes" /> ) > 0,
<cfqueryparam cfsqltype="cf_sql_integer" value="#id_check#" list="yes" />,
id
)
)
解决方案
我认为你有<cfqueryparam>
向后的功能。id
答案取决于IN ()
. 如果这应该是一个 ColdFusion 变量,那么以下内容将为您工作。
<cfif listLen(cash_drawer_number)>
<cfset idList = cash_drawer_number>
<cfelse>
<cfset idList = id>
</cfif>
<cfquery name="foo" datasource="datasource">
SELECT id
FROM test
WHERE
id IN (<cfqueryparam cfsqltype="cf_sql_integer" value="#idList#" list="yes" />)
</cfquery>
如果这与查询中的列相同,id
则意味着您正在尝试获取所有记录。
<cfquery name="foo" datasource="datasource">
SELECT id
FROM test
WHERE
1=1
<cfif listLen(cash_drawer_number)>
AND id IN ( <cfqueryparam cfsqltype="cf_sql_integer" value="#cash_drawer_number#" list="yes" /> )
</cfif>
</cfquery>
推荐阅读
- angular - Angular 4 Mapbox 通过 ngFor 创建多个地图
- c# - 本地 dll 和 nuget lib 之间奇怪的 C#.Net 依赖关系
- maven - Liquibase:如何根据配置动态包含来自 github 的文件
- entity-framework - 返回实体框架上的临时表
- html - 我无法理解成功标准 1.3.6:确定目的
- java - 如何创建返回 JSON 的多线程 POST 请求?
- ssl - Netty Echo 服务器/客户端 - SSL 不起作用
- api - Twitter api 将上传的视频关联到媒体库
- opencl - CodeXL 在 clCreateContext 期间崩溃
- c# - 不调用控制器方法