如何为 SQL where 过滤器创建用户输入?所以我使用 ODBC 连接到 SNOWFLAKE 并运行一些脚本。 想知道如何设置带有 WHERE 过滤器列表的 UI 窗口,以方便 ppl 使用。
我正在设想一个带有弹出窗口的列表,然后映射到一个变量以提供给 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 过滤器创建用户输入?这绝对是可能的。 很大程度上取决于您使用 jsl 的编码技能以及系统的复杂程度(如果它只是使用简单的 where 子句进行过滤,那可能很简单)。
需要考虑的几件事:
- 使用模板字符串,然后使用 Eval Insert 在那里添加值(或只是将字符串连接在一起)。
- 你想如何处理像/=? 显示框(单选框、复选框、组合框)或文本编辑框中的某些特定字符,它们将指示如何解析文本?
- 如何处理 in 和多个类似条件(filter1 之类的东西或 filter2 之类的东西)?
- 没有怎么处理?
- 模态窗口让您轻松处理脚本流
- 考虑系统以后可能如何扩展
- Scripting Guide 和 Scripting Index 会有很大帮助。 此外,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 查询(并且我目前正在对它进行完全重写,当我有时间时,因为扩展它太困难了)。
回复:如何为 SQL where 过滤器创建用户输入?这很容易完成SQL 查询生成器.
在过滤器中,在运行时提示的过滤器中有一个选项,JMP 会为您提示。 无需构建自己的对话框。

阅读更多内容并浏览示例构建 SQL 查询.