[小菜一碟] 利用 SQL Server 的 CTE(Common Table Expression)遞迴取得族譜中某人的所有子孫

樹狀的資料結構在日常的程式設計當中挺常見的,舉凡像是留言板人事組織族譜、…等,都用得上,但當我們把樹狀結構的資料存進 SQL Server 之後想要撈出來,除了用跑迴圈之外大概就是用遞迴了,迴圈的寫法就不多介紹,本篇文章要來跟大家分享遞迴的寫法。

...繼續閱讀 »

[小菜一碟] 適用 SQL Server 的三種單筆資料 INSERT or UPDATE(Upsert)的寫法

INSERT or UPDATE 或者有人稱 Upsert,是一個撰寫資料庫存取應用程式一定會遇到的場景,這個看起來簡單不過的寫入資料邏輯,到了實際真正要施作的時候,是有一些細節需要去注意的,下面我就我所知道的三種 INSERT or UPDATE 的寫法跟各位朋友分享。

...繼續閱讀 »

[小菜一碟] 在 SQL Server 做密碼的雜湊跟比對

我們都知道不應該將密碼以明碼的方式存進資料庫,至少密碼要雜湊(Hash)過才放進資料庫,大多數的人應該都是選擇在應用程式裡面,先將密碼雜湊過,再將密碼存進資料庫內,不過 SQL Server 已經有一套機制來處理密碼雜湊這件事,我們可以放心地交給 SQL Server 自己來處理。

...繼續閱讀 »

[廚餘回收] 解決因參數嗅探(Parameter Sniffing)導致使用到錯誤執行計劃的方法之一 - 加入註解。

遇到參數嗅探(Parameter Sniffing)出問題的時候真的會讓人無力,我們為了避免 SQL Injection,所以參數化查詢變成了通則,而正是因為參數化查詢才會有參數嗅探,如果我們是使用 Adhoc 或 Prepared 的方式在下 SQL 語句的話,倒是有一個方法能夠避免因參數嗅探使用到錯誤執行計劃的問題,那就是加入註解

...繼續閱讀 »

[小菜一碟] 已知有一個固定值的集合,在 SQL Server 怎麼把它變成 Table?

這個標題聽起來像是廢話,我們有一個集合,怎麼把它變成 Table? 啊不就 INSERT INTO 就好了?我要介紹的不是只有 INSERT INTO 而已,我們在寫 SQL 的時候,偶爾會遇到一種場景,我們手上有一個集合,這個集合的值是固定的,比如說年份 2011 ~ 2020、月份 1 ~ 12、...等,這個集合我們會拿去跟現有的資料做 JOIN,進行一些統計運算,我們把這個集合變成 Table,在操作上就會比較方便一點,我就我所知的四種方法來跟大家分享。

...繼續閱讀 »

[小菜一碟] 無意中發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能

如果我們接手維護一個資料庫,裡面的 Table、View、Stored Procedure、Function、Trigger 相依鏈錯綜複雜,想要定位發生問題的區塊,搞得像盜墓一樣,這天我無意間發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能,有助我們來釐清資料庫物件的相依鏈。

...繼續閱讀 »

[小菜一碟] SQL Server 內建的一個抽號碼牌的功能 - SEQUENCE

在過往的需求中,難免會有那種需要按照順序產生或處理資料的時候,我個人常用的解法是替資料照著順序給一個可排序的標記,這就需要一個按照順序產生識別碼的機制,如果在同一個應用程式內還好處理,要是跨應用程式、跨機器的話,產生識別碼的演算法就要好好想想,現成的話 SQL Server 就有一個 SEQUENCE 功能可以用。

...繼續閱讀 »