[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]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]輸入全半形空白

來到周末前,客戶跑來同事的桌邊問了一個小問題,T-SQL要如何輸入全型空白(空格),為了工程師肉眼的可維護性,除了直接輸入這種' ',想找其他的解法,剛剛跑步時想到客戶的問題,想到幾種解法,快來筆記一下。

...繼續閱讀 »