SQL SERVER 字符超长时报错:将截断字符串或二进制数据。LEN&DATALENGTH

当出现这种错误时,代表字符长度超出了表字段允许的最大长度。

就需要查看是哪个字段超长了。

如果表字段类型为char / varchar:

1、字符内容不包含中文,那么既可以使用 len,也可以使用 datalength 来检测字符的长度

2、字符内容包含中文,那么则需要使用 datalength 来检测字符的长度

if object_id('t') is not null drop table t;
create table t(col varchar(2))

insert t values('')    --能正常插入
insert t values('中a')    --报错:将截断字符串或二进制数据

 

 

 

 如果表字段类型为 nchar / nvarchar: 那么 则需要使用 LEN 来检测字符的长度。

if object_id('t') is not null drop table t;
create table t(col nvarchar(1))

insert t values('ab')

以上代码会报错:将截断字符串或二进制数据。

 

 

注:

DATALENGTH:此函数返回用于表示任何表达式的字节数。

LEN:返回指定字符串表达式的字符数,其中不包含尾随空格。

一个中文占两个字节。

posted @ 2025-08-19 15:52  竹楼风雨声  阅读(257)  评论(0)    收藏  举报