SQL Server 2017推出STRING_AGG 字串集合的串接函式,但限制是SQL2017的版本。上個月重新加入一個大型專案中,專案的版本要求是SQL 2016,Code Review時發現同事改用For Xml Path再Distinct的替代,T-SQL閱讀起來多了點複雜,捲手來救援T-SQL程式的可讀性。
[SQL Server][T-SQL]新增資料表欄位(Default Value加上Not Null)之續集(SQL冰魔法)
延續上週新增資料表欄位Default Value + Not Null是否會給舊資料預設值的題目。上一篇確認Default Value + Not Null會給也必須要給舊資料預設值,但為何相同資料量測試環境飛快但正式環境跑1小時?這種飛快,感覺不太真實,資料分頁真的有修改到?還是只有改定義?
[SQL Server][T-SQL]新增資料表欄位(Default Value加上Not Null會不會自動將舊資料給預設值)
今晚的程式過版中,有一部分是大型資料表要加開10幾個欄位來跟上行動支付潮流,到家後接到客戶電話,DBA大人執行DDL Alter Table欄位新增語法(Add Column)時,執行了1小時(....)。印象中同事的語法沒有加With Values,應該只修改到定義,沒有改到原始的資料分頁,另外,測試環境類似的交易量跑起來也很快,呼~~~
卡住的時候就是該重新測試填補SQL知識了,這篇先確認SQL是否會將舊資料給預設值,下一篇來查效能問題。
[SQL Server][T-SQL]SQL語法夾帶全形空白導致語法錯誤
這週有個客戶的案子幾百隻程式上線,上線後的隔天早上,同事S回報了系統程式出現很基本的SQL語法錯誤,明明年輕的工程師都測試過,還是發生了。
為了要掩蓋自己對這次問題原因的了解不足(是相容性層級嗎?),趕緊掛上電話花幾分鐘簡單的測試,試試改相容性層級然後回報同事S,最後發現問題在於不同SQL版本對全形空白的解析有差異,這次和相容性層級無關,晚上看F1賽車不練跑,快來筆記這個全形空白問題。
[SQL Server][T-SQL]STRING_AGG資料集組成字串(SQL Server 2017)
SQL Server 2016推出了將字串分割成資料集(STRING_SPLIT)的功能,今年SQL Server 2017則推出了將資料集組成字串的串接功能(STRING_AGG),而且還支援簡單的分組和排序,今晚繼續吃第三顆語法糖(胖)。
[SQL Server][T-SQL]TRANSLATE字串取代功能強化(SQL Server 2017)
如果想替換字串中的值,我們習慣在SQL Server用上REPLACE()函式,但碰上要換多個字串pattern時,就要用巢狀結構使用REPLACE()函式,SQL程式寫起來就比較不好閱讀,Oracle很早就有TRANSLATE()函式可以簡化語法,現在SQL Server 2017也開始支援了TRANSLATE(),今晚我們繼續吃語法糖(TRANSLATE)。
[SQL Server][T-SQL]CONCAT_WS串接分隔字元強化(SQL Server 2017)
如果打算將SQL查詢結果串接成逗號分隔的csv檔案,用ETL工具、BCP、用管理工具在查詢結果按右鍵等都可以實現,但如果想單靠SQL語法,MySQL可以用concat-ws()函式,在SQL Server我們就得用上很長的語法串接(+號 or CONCAT),今晚是新加坡F1夜戰第10年,一邊看賽車一邊來吃SQL 2017新的語法糖。
[SQL Server][T-SQL]Sequence序號使用時的效能
下午協助同事抓SQL資料庫效能問題,暫時沒有頭緒,不過碰上了已經在記憶體中忘光的SQL 2012新功能(對不起老師): 順序物件(Sequence),來筆記,順便觀察快取設定對取號效能的影響。
[SQL Server][T-SQL]輸入全半形空白
來到周末前,客戶跑來同事的桌邊問了一個小問題,T-SQL要如何輸入全型空白(空格),為了工程師肉眼的可維護性,除了直接輸入這種' ',想找其他的解法,剛剛跑步時想到客戶的問題,想到幾種解法,快來筆記一下。
[SQL Server][T-SQL]將多筆資料列串接成單一欄位的複合字串
最近的工作中要幫使用者設定大量的系統參數,有陣子沒使用到資料列串接,一時之間失去了她的消息,這年頭忘記的比記得的多,重新拾回後快來點部落筆記,順便二探SQL Server 2016新功能: STRING_SPLIT:字串切割。
[SQL Server][T-SQL]找出有跨資料庫讀取資料表的預存程序、檢視及功能
有時預存程序、檢視表會跨資料庫讀取資料,客戶最近想盤點跨資料庫存取的程式清單,來筆記快速找出物件的T-SQL語法。
[SQL Server][T-SQL]查詢數值欄位中有沒有小數位數的值
資料匯入資料庫準備驗證總數時發現有小數位,於是想要抓出有鬼的資料出列,解題答案可能有很多種,腦海中想到這個數學函數!
[SQL Server][T-SQL]累積總計Running Totals
這兩天協助客戶處理累積交易餘額的資料修補,因為要使用到累積總計(Running Totals),但客戶還在使用SQL Server 2008 R2,筆記SQL Server 2012前後兩個版本的作法。
- 1