2012-12-11 15 views
0

我將如何在cfscript中構造一個IN子句?下面是我有:ColdFusion - 如何在cfscript中執行SQL「IN」子句?

var tagList = "301,302,303,304"; 
var q = new Query(); 
q.setDatasource ("mydatasource"); 

var sqlStmt = "SELECT * FROM Tags WHERE tagID IN (:tagList)"; 

// I know the next line is not correct! 
q.addParam (name="tagList", value="#tagList#", cfsqltype="??? WHAT SHOULD IT BE ???"); 

有一個簡單的方法來做到這一點,或者我需要通過標籤的列表進行迭代,分別添加每一個?

+2

小點 - CF有時會好笑參數。在param名字後面往往需要一個尾部空格,導致我過去遇到過問題(例如'(:tagList)')(http://www.bennadel.com/blog/1678-Learning-ColdFusion-9-使用CFQuery和其他服務標籤在CFScript.htm) –

+0

我沒有注意到這種行爲,但這是一篇很好的文章。謝謝! – Redtopia

+1

當有人決定修剪所有空白,前導和尾隨,然後修剪尾隨空格是一個好主意時,這是最常見的情況。在清理完成之後,我們現在使用的解決方法是將括號括起來的所有參數(如您的IN所示),所以尾部空間永遠不會被這個愚蠢的清理腳本計算爲尾隨:) –

回答

12

有上<cfqueryparam>列表屬性,它應該得到支持:

q.addParam (name="tagList", value="#tagList#", cfsqltype="CF_SQL_INTEGER", list="yes"); 
+0

啊哈!我會嘗試並回復! – Redtopia

+0

工作!太好了謝謝! – Redtopia