平時接觸都是float類型、number類型轉化成nvarchar類型。用cast,convert就可以。
今天把一個excel導入到SQL Server 2012中,處理完后復制到excel里,格式都亂了;
於是想把tab鍵、換行符等替換掉的,結果看到一字段ntext類型,於是用replace試下,結果不行;
官方上說的很明確了,如果string_expression的類型不是varchar(max)或nvarchar(max),則REPLACE將截斷返回值,截斷長度為8,000字節。
若要返回大於8,000字節的值,則必須將string_expression顯示轉換為大值數據類型。
先說明我的那字段真大於8000,而且我真的使用convert(nvarchar(8000),column_name)轉換的,結果失敗;好吧,我承認我錯了,我該仔細看報錯說明的,我把8000改為4000就OK了。
但是,但是,我要說一點,convert(nvarchar(4000),column_name)這個絕對有截斷的。
重點是下面:
convert(nvarchar(max),column_name)
這樣竟然沒報錯(開始使用convert(nvarchar(8000),column_name)報錯的,后來我找了個max),我很吃驚!我不知道有沒有截斷哦,好像這么多內容,excel的單元格不顯示全的。
max 指示最大存儲大小是 2^31-1 個字節
再次標注下:
char(9) 水平制表符
char(10)換行鍵
char(13)回車鍵