2018-04-05

Use T-SQL to generate SQL Server scripts and NULL value for INSERT, UPDATE, DELETE


延續前一篇:Use T-SQL to generate SQL Server scripts for INSERT, UPDATE, DELETE


使用 T-SQL 將資料表的資料,產生為逐筆的 INSERT, UPDATE, DELETE 陳述式。

  • 但若遇到 資料行 內含有 NULL 值,將導致所組出來的語法為 NULL。
  • 使用 IIF() 邏輯函數 或 CASE() 運算式 來處理 NULL 值問題。





SELECT INTO 產生新資料表

  • 已知 資料行 EmployeeID 是具備 IDENTITY 屬性。
  • 利用 EmployeeID + 0 EmployeeID 的方式來產生資料行,則新產生的 資料表之 資料行 EmployeeID 是不擁有 IDENTITY 屬性。






Use T-SQL to generate SQL Server scripts and NULL value for INSERT, UPDATE, DELETE 


使用 T-SQL 將資料表的資料,產生為逐筆的 INSERT, UPDATE, DELETE 陳述式。


01. 已知資料行 Region 內含有 NULL 值。

-- figure 11_Column Region has NULL value






02. 判斷各個資料行是否有 NULL 值。


  • COUNT(*):包括含有 NULL 值的資料列
  • COUNT(ColumnName):不包含有 NULL 值的資料列。
  • 使用 IIF() 邏輯函數 或 CASE() 運算式 來判斷。


-- figure 12_Is there any NULL for each column






03. 檢視資料表的結構定義:


  • SQL OPS:選擇 目標資料表,滑鼠右鍵,選擇  Peek Definition。
    • Go to Definition 是在新的視窗產生此資料表的結構定義。
  • SSMS:選擇 目標資料表,按下 ALT + F1。



-- figure 13_Peek_Definition




04. 檢視資料表的定義。

-- figure 14_View_Table_Definition





05. 使用 T-SQL 將資料表的資料,產生為逐筆的 INSERT, UPDATE, DELETE 陳述式。

範本

  • SELECT '要執行的 INSERT, UPDATE, DELETE 的 指令碼' + [資料行名稱1]... FROM [資料表名稱]
  • 字串資料類型,前後需要有 ' (單引號)。
    • 其中,兩個 '' 表示一個 ' 。


由於資料行 Region 內含有 NULL 值。導致所組出來的語法為 NULL。

-- figure 15_NULL issue - Column-Region





06.  檢視所產生的 INSERT Query。

-- figure 16_NULL issue - Column-Region





07. 使用 IIF() 邏輯函數 或 CASE() 運算式 來處理 NULL 值問題。本範例使用 IIF()。


  • 含有 NULL 的資料行,不需要 ' (單引號)。


-- figure 21_Solution use Logical Functions IIF()





08. 檢視所產生的 INSERT Query。


  • 確實正確能處理 NULL 值。


-- figure 22_T-SQL to generate SQL Server scripts and NULL value





09.  SELECT INTO 建立新的資料表


  • 已知 資料行 EmployeeID 是具備 IDENTITY 屬性。
  • 利用 EmployeeID + 0 EmployeeID 的方式來產生資料行,則新產生的 資料表之 資料行 EmployeeID 是不擁有 IDENTITY 屬性。


-- figure 31_CREATE TABLE Employees_V1





10. 查詢新建立的資料表 Employees_V1

-- figure 41_0_rows




11. 執行先前所產生的 INSERT Query,正確無誤的新增資料。


-- figure 42_Insert rows from T-SQL to generate SQL Server scripts and NULL value




12. 檢視所新增的資料,NULL 部分能正確處理。

-- figure 43_Verify 9 rows




13. 檢視資料表的結構定義:


  • SQL OPS:選擇 目標資料表,滑鼠右鍵,選擇  Peek Definition。
    • Go to Definition 是在新的視窗產生此資料表的結構定義。
  • SSMS:選擇 目標資料表,按下 ALT + F1。



-- figure 44_View_Table_Definition




14. 使用 SQL OPS,在 Server ,檢視 此資料表的結構定義。


-- figure 45_Server_View_Table_Definition







Sample Code

20180405_Use T-SQL to generate SQL Server scripts and NULL
https://drive.google.com/drive/folders/0B9PQZW3M2F40OTk3YjI2NTEtNjUxZS00MjNjLWFkYWItMzg4ZDhhMGIwMTZl?usp=sharing





References

Use T-SQL to generate SQL Server scripts for INSERT, UPDATE, DELETE
http://sharedderrick.blogspot.tw/2017/10/use-t-sql-to-generate-sql-server.html

SQL Server 2012 :認識 IIF 邏輯函數
http://sharedderrick.blogspot.tw/2012/07/sql-server-2012t-sql-iif.html








沒有留言:

張貼留言