先說個問題: 看這樣一個很簡單的存儲過程,接收有一個text類型的參數。 CREATE
PROCEDURE pr_testprocedure 在SQL 中調用 DECLARE
@largeText
VARCHAR(8000)
大家知道,在SQL Server 2000中,VARCHAR的最大長度是8000,如果字符串的長度超過8000,保存在VARCHAR中時就會被截斷。如果你需要傳入的參數恰好很長,比如是一個xml,很多時候都會超過8000個字符。那怎麼辦呢? DECLARE @largeText TEXT 是不行的,那我們怎麼辦呢? 在SQL Server 2000中,這的確是個很棘手的問題。不過幸運的是SQL Server 2005爲我們提供了VARCHAR(MAX),它的最大長度可以達到2G,足夠用了:)。而且,我們原先熟悉的字符串處理函數REPLACE,LTRIM等等也可以用了,多完美啊,呵呵 VARCHAR(MAX), NVARCHAR(MAX)和VARBINARY(MAX)是SQL Server 2005中引進的,可以作爲TEXT, NTEXT和IMAGE的替代。 做個試驗: declare
@smallVarChar
varchar(1)
LengthOfSmallVarChar -------------------- 8000 declare
@maxVarChar
varchar(max)
LengthOfMaxVarChar -------------------- 8001 嗯,上面存儲過程的難題也迎刃而解了: DECLARE
@largeText
VARCHAR(MAX)
Perfect!! 不過還有一點是要注意的,VARCHAR和VARCHAR(MAX)混在一起做處理時還是會變成VARCHAR,從而可能被截斷,所以需要全轉成VARCHAR(MAX) 比如: |
varchar(MAX)--SQL2005的增強特性
varchar(MAX)--SQL2005的增強特性
2010-08-03 15:18
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.