- 在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:
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。