在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據大家好。
我正在使用 JSL 腳本中的 SQL 訪問某個數據庫。
為了提取我想要的數據,我需要提供一個規範。
該規範在 JMP/JSL 中以列表或矩陣的形式出現。
如果我手動輸入單個項目名稱,它就可以工作。 =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");但是,由於項目可能有數千個,我需要找到一種方法來使用表示項目列表(或矩陣)的單個名稱。
當然,這樣是行不通的。 =>
/* Fetch Data from Data Table*/
Items_M = :Items << get as matrix();
/* Fetch Data from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('^Items_M^')");是什麼最簡單的方法來做到這一點?
謝謝你!
數據存取回复:在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據謝謝!
這也有效。 而且非常有用!
最好的,
瓦萊里奧
回复:在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據我通過示例更改為使用連接項目函數的作用是將列表轉換為逗號分隔的字符串。 您的代碼使用了 ^^ 這是執行插入的智能方法,但它只能與評估插入物功能。
回复:在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據我通常是這樣做的:
- 構建唯一的列值列表
- 將該列表輸入到 SQL 中
- 將數據從數據庫返回到新表中
到目前為止,我知道執行此任務的最簡單方法,並且我經常使用它,
我已經在我的菜單中實現了這一點,以便快速獲得它。
// take unique values from the column :items
dt = open("$SAMPLE_DATA\Big Class.jmp");
summarize( Current Data Table(), item_lst = by( :NAME /* :item */ ) );
// show list
show(item_lst);
// prepare list for sql
item_lst_str=substitute (char(item_lst),"{","(","}",")","\!"","'");
// open SQL Query with inserted item_lst
New SQL Query(
Connection(
"ODBC:DSN=DSN_NAME;UID=user;DBQ=database;" // connection string to be modified
),
QueryName( "ITEMS_Query" ),
CustomSQL( eval insert("SELECT * from database_table dt where dt.item in ^item_lst_str^;") )
) << modify;
// or directly run if neccessary
// ) << Run;回复:在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據非常感謝!
這就是我一直在尋找的... 它在周末無法工作,因為我對數據庫的訪問不穩定。
再次感謝。
回复:在 JSL 腳本中使用 SQL 和 JMP 字符串提取數據我不能說,什麼是最簡單的,但這就是我的做法:
// for test purposes
lstItems = {"A","B","C","D"};
// build a comma separated list
strItems = ConcatItems(lstItems,",");
/* Fetch Data from Database*/
eval(parse(evalinsert("\[
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN (^strItems^)")
]\")));;