在 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^)")
]\")));;