如何為 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 查詢(目前我有時間時正在對其進行完全重寫,因為擴展它太困難了)。