如何為 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 查詢.