如何为 SQL where 过滤器创建用户输入?因此,我使用 ODBC 连接到 SNOWFLAKE 并运行一些脚本。 想知道如何设置一个带有 WHERE 过滤器列表的 UI 窗口,以使人们更容易使用。
我设想一个带有弹出窗口的列表,然后映射到一个变量以输入到 SQL 脚本中。可能的?

//**SNOWFLAKE QUERY****************************************************************************************************
uid = Get Environment Variable( "USERNAME" );
sql_state="
/********************************/
SELECT distinct
column1
,column2
,etc
from Database
WHERE 1=1
and filter1 like '%qwerty%'
and filter2 in ('a', 'b', 'c')
--and filter3 = '54168'
--and filter4 <> 'that_thing'
--and filter5 not in ('group1','group2')
and Date >= CURRENT_DATE - 30 /*go back 30 days*/
";
snowflake_spc = Open Database( "DSN=SNOWFLAKE1;UID=account;PWD=password;", sql_state );
/****************************************************************************************************/
数据存取回复:如何为 SQL where 过滤器创建用户输入?这可以通过以下方式轻松完成SQL 查询生成器。
在“过滤器”中,“过滤器”中有一个“运行时提示”选项,JMP 将提示您。 无需构建您自己的对话框。

阅读更多内容并浏览示例构建 SQL 查询。
回复:如何为 SQL where 过滤器创建用户输入?这绝对是可能的。 很大程度上取决于您使用 jsl 的编码技巧以及系统的复杂程度(如果只是使用简单的 where 子句进行 where 过滤,则可能会很简单)。
有几点需要考虑:
- 使用模板字符串,然后使用 Eval Insert 在其中添加值(或者只是将字符串连接在一起)。
- 你想如何处理like/=? 显示框(单选框、复选框、组合框)或者文本编辑框中的某些特定字符将指示如何解析文本?
- 如何处理 in 和多个 like 条件(filter1 like Something 或 filter2 like something)?
- 不可以怎么处理?
- 模态窗口为您提供了处理脚本流程的简单方法
- 考虑以后系统如何扩展
- 脚本指南和脚本索引将提供很大的帮助。 JMP 帮助还可以帮助处理不同的显示框。
下面是使用模板字符串然后使用 eval insert 构建最终 SQL 的非常简单的示例。
Names Default To Here(1);
sqlTemplate = "\[
select *
from *
where 1=1
^filter1Str^
^filter2Str^
]\";
filter1Str = "";
filter2Str = "";
rbSel = {"like", "in", "=", "not in", "not like"};
ex = New Window("Dialog() example",
<<MODAL></MODAL>
我已经构建了一个非常相似的系统,它根据用户输入和用户界面中的选择构建完整的 SQL 查询(目前我有时间时正在对其进行完全重写,因为扩展它太困难了)。