請先參考前一篇文章:
T-SQL:認識 COALESCE() 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-coalesce.html
請參考以下的範例:
EX1. 刪除 SQL Server 上全部的連線,但保留本身這條連線不會刪除
-- 檢視 SQL Server 目前所有的連線 session ;所有目前的處理序 USE master GO SELECT * FROM sys.dm_exec_connections GO
-- 01_查詢目前所有的連線
-- 使用 ISNULL() 函數:刪除 SQL Server 上全部的連線,但保留本身這條連線不會刪除 DECLARE @str1 nvarchar(MAX) SELECT @str1 = ISNULL(@str1, '') + 'KILL ' + CAST(session_id AS nvarchar(10)) + ';' FROM sys.dm_exec_connections WHERE session_id<>@@SPID -- PRINT @str1 EXEC sp_executesql @str1 GO /* PRINT 陳述式所回傳的結果: KILL 52;KILL 51;KILL 53;KILL 54;KILL 56;KILL 57;KILL 58;KILL 59;KILL 60;KILL 61;KILL 62;KILL 63;KILL 64;KILL 65; */
-- 02_PRINT 陳述式所回傳的結果
-- 使用 COALESCE() 函數:刪除 SQL Server 上全部的連線,但保留本身這條連線不會刪除 DECLARE @str1 nvarchar(MAX) SELECT @str1 = COALESCE(@str1, '') + 'KILL ' + CAST(session_id AS nvarchar(10)) + ';' FROM sys.dm_exec_connections WHERE session_id<>@@SPID -- PRINT @str1 EXEC sp_executesql @str1 GO
-- 03_只剩下自身此條連線
EX2. 使用逗號分隔回傳的資料
-- 使用 ISNULL() 函數:使用逗號分隔回傳的資料 USE Northwind GO DECLARE @titlelist varchar(MAX) SELECT @titlelist = ISNULL(@titlelist + ',' , '') + Title FROM dbo.Employees SELECT @titlelist N'職稱列表' GO
-- 使用 COALESCE() 函數:使用逗號分隔 USE Northwind GO DECLARE @titlelist varchar(MAX) SELECT @titlelist = COALESCE(@titlelist + ',' , '') + Title FROM dbo.Employees SELECT @titlelist N'職稱列表' GO
-- 04_使用逗號分隔回傳的資料
參考資料
T-SQL:認識 COALESCE() 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-coalesce.html
How to use COALESCE and ISNULL?
http://www.sqlusa.com/bestpractices/coalesce/
Performance of COALESCE vs. IS NULL
http://sqlserverperformance.idera.com/tsql-optimization/performance-coalesce-null/
沒有留言:
張貼留言