微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结果集列返回超过 4000 个字符的 MS SQL 问题

如何解决结果集列返回超过 4000 个字符的 MS SQL 问题

select top 500 ID,(DATA1+DATA2) as DATA 
from TABLE1 

DATA1 有 3000 个字符,DATA2 有 4000 个字符

预期输出 DATA1+DATA2 = 7000 个字符

当前结果是 DATA1+DATA2 = 4000 个字符

解决方法

最有可能的罪魁祸首是您的字段的数据类型。您很可能将 NVARCHAR(4000) 作为类型,它会截断 4000 个字符后的任何内容。您需要使用 NVARCHAR(MAX) 来获得所需的输出。这可以在表级别或通过强制转换来完成

DECLARE @table TABLE (
ID int,DATA1 NVARCHAR(4000),DATA2 NVARCHAR(4000),DATA3 NVARCHAR(MAX),DATA4 NVARCHAR(MAX)
)


INSERT INTO @table
values 
(1,REPLICATE('X',4000),3000),3000))

SELECT 
LEN(DATA1 + DATA2),-- will be not 7000 due to 4000 char limit
LEN(CAST(DATA1 AS NVARCHAR(MAX)) + CAST(DATA2 AS NVARCHAR(MAX))),-- will be 7000 due to new type
LEN(DATA3 + DATA4) -- will be 7000 due to fields already have the max type
FROM @table

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。