SQL Server nvarchar(max)

平时接触都是float类型、number类型转化成nvarchar类型。用cast,convert就可以。

今天把一个excel导入到SQL Server 2012中,处理完后复制到excel里,格式都乱了;

于是想把tab键、换行符等替换掉的,结果看到一字段ntext类型,于是用replace试下,结果不行;

再次验证了官方说明上replace函数的使用的正确性LY6DR3ISJE0)6K)L)]~VIZK

image

官方上说的很明确了,如果string_expression的类型不是varchar(max)或nvarchar(max),则REPLACE将截断返回值,截断长度为8,000字节。

若要返回大于8,000字节的值,则必须将string_expression显示转换为大值数据类型。

先说明我的那字段真大于8000,而且我真的使用convert(nvarchar(8000),column_name)转换的,结果失败;好吧,我承认我错了,我该仔细看报错说明的,我把8000改为4000就OK了。

image

但是,但是,我要说一点,convert(nvarchar(4000),column_name)这个绝对有截断的。

重点是下面:

convert(nvarchar(max),column_name)

这样竟然没报错(开始使用convert(nvarchar(8000),column_name)报错的,后来我找了个max),我很吃惊!我不知道有没有截断哦,好像这么多内容,excel的单元格不显示全的。

max 指示最大存储大小是 2^31-1 个字节

image

再次标注下:

char(9) 水平制表符
char(10)换行键
char(13)回车键

原文地址:https://www.cnblogs.com/cnmarkao/p/6019443.html