我有一个SQL Server查询,它返回一个MyBusinessUnit列的两个值,返回两个值,例如:
1111
2222
在名为MyQuery1
这两个值也存在于DB2数据库的MyCorpUnit
列中。
我想要的是从DB2表中选择所有匹配的记录 - 而且,不,跨数据库查询不起作用。
所以,这是我的Query2
DB2数据库:
<cfquery name="Query2" datasource="#application.DSN#">
SELECT MyCorpUnit WHERE MyCorpUnit IN
(
<cfqueryparam value=" #Query1.MyBusinessUnit #" CFSQLType="cf_sql_varchar" />
)
</cfquery>
但是Query2只返回一个值(1111)的匹配记录。
因此需要一些其他方法。我试图创建一个字符串,但这也没有用。
有什么想法吗?
谢谢!
答案 0 :(得分:3)
cfqueryparam有一个 list 属性可能会有所帮助:
<cfqueryparam value = "parameter value"
CFSQLType = "parameter type"
list = "yes|no"
maxLength = "maximum parameter length"
null = "yes|no"
scale = "number of decimal places"
separator = "separator character">
AND/OR ...additional criteria of the WHERE clause...>
我以前用过它但不确定它是否在QoQ中。 :d
参考:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html
答案 1 :(得分:2)
我将接受@AJ Dyka的回答[谢谢!]但我还有更多要补充的内容。事实上,根据他的建议,我最终使用了“LIST&#39;属性。对它进行了很好的讨论can be found here。
但是,正如你在评论中看到的那样,我仍然只得到&#34; 1111&#34;尽管使用了List。这是因为我的数据中有前导空格。我最终使用了TRIM功能。这是一段代码片段。
将Query1的输出转换为List:
<cfset ListUniqueWStreamBusinessUnit = ValueList(Query1.MyBusinessUnit )>
然后是神奇的代码段!
...
WHERE trim(GMMCU) IN
(
<cfqueryparam value="#ListUniqueWStreamBusinessUnit#"
CFSQLType="cf_sql_varchar"
list="yes" />
)