- 在triger中,可以在inserted和deleted資料表中使用大數值資料類型;
- Update新增Write()函數,可以對大數值資料類型執行區塊更新;
在未來的 Microsoft SQL Server 版本中,將移除 ntext、text 和 image 等資料類型。請避免在新的開發工作中使用這些資料類型,並規劃修改目前在使用這些資料類型的應用程式。請改用 nvarchar(max)、varchar(max) 和 varbinary(max)。如果你使用MS SQL Server 2005之後的版本,請注意以上訊息。
Update之Write()子句
我們來看Update含Write()子句的語法:
Update 資料表 Set 資料行 = .Write(運算式, 起點位置,長度) From 來源資料表 Where 條件
看實例:
-- 暫存資料表 CREATE TABLE #t1 ( id INT IDENTITY(1,1) NOT NULL, CONTENT NVARCHAR(MAX) ); GO -- 新增兩筆資料,也是使用SQL Server 2005的新語法 INSERT #t1 VALUES (N'在MS SQL Server 2005新增了「MAX」的資料類型,如:varchar(MAX)、nvarchar(MAX)、varbinary(MAX),MSDN翻譯為「大數值資料類型」,基本上是可以儲存到2^31-1位元組的資料,而且加強了數種功能'), (N'在未來的 Microsoft SQL Server 版本中,將移除 ntext、text 和 image 等資料類型。請避免在新的開發工作中使用這些資料類型,並規劃修改目前在使用這些資料類型的應用程式。請改用 nvarchar(max)、varchar(max) 和 varbinary(max)。') GO -- 將id=1的MS換成Microsoft -- 起點位置由0開始計算 UPDATE #t1 SET CONTENT.write('Microsoft',1,2) WHERE id=1 -- 將id=2的Microsoft換成MS UPDATE #t1 SET CONTENT.write('MS',5,9) WHERE id=2 GO SELECT * FROM #t1 GO DROP TABLE #t1 GO
使用Write()子句只有一點點不方便,就是你必須自己計算「起點位置」及「長度」,還有不能更新值為Null等。
Reference:
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。