2008年7月10日

SQL語法組成,邏輯運算子 vs Between

最近坎尼出差都回不了家
在昏暗的飯店房間裡根本沒心情上來寫文章 真抱歉
Tim最近也忙於公司的事 看來大家都很忙 哈


好,今天要講的是 SQL 語法的組成
坎尼看到同事寫的 取某期間內的資料 的 Sql 語法
(起始日結束日 並未強制使用者輸入)

首先 他傳了 date1 和 date2 (date1為起始日 date2為結束日)
接著寫下了下面的組成判斷式

if (date1 != "" && date2 != "")
strSql += " and date between @date1 and @date2 ";
else if (date1 != "" && date2 == "")
strSql += " and date >= @date1 ";
else if (date1 == "" && date2 != "")
strSql += " and date <= @date2 ";

ok 以上還是坎尼幫他簡化過的 Sql 語法
然後坎尼看到了所有跟日期有關的 Sql 部分 都是寫成類似上述的判斷

應該有人會說 這麼寫有錯嗎?
坎尼跟你說:沒錯啊 XDDDD (瞬間被打飛)

不是啦,坎尼是想說,這只要兩行就可以結束的東西,不必寫這麼多啦
以下是坎尼改寫過的 Sql 組裝句
strSql += (date1 != "") ? " and date >= @date1 " : "" ;
strSql += (date2 != "") ? " and date <= @date2 " : "" ;

怎樣?是不是簡潔許多? (看不懂上面寫法的人 請Google 三元運算式 )
在這種不確定是否有兩個值傳入的比較式
坎尼不會輕易動用 between (平常也沒用between的習慣就是)

當然,這也可以用於其他 數值比較 的語法中
只要條件和上述的一樣:不強制輸入值、比較值需與傳入值(複數)作比較
都可以用上述的寫法
不要再寫成 落落等 的一大堆 if else 啦 不然以後維護的人員會很痛苦 (就是坎尼)

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D