问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sqlsever [Microsoft][ODBC SQL Server Driver][SQL server]将截断字符串或二进制数据

发布网友 发布时间:2022-04-11 03:42

我来回答

2个回答

懂视网 时间:2022-04-11 08:03

1. 问题描述

在同步数据时常常会发现一个错误:将截断字符串或二进制数据。

2. 问题原因

这个问题出现的原因是:要插入的数值字段的长度超出了数据库中字段的长度。比如:插入的字符串字节长度是40,数据库中字段长度设置为了varchar(36)就会报此错误。

3.问题扩展

a. 如何计算字符串长度和字节长度,既:datalength和len区别。
len:返回字符串的长度
datalength:返回字符串的字节长度

select len(convert(varchar(50),N'狮lion')) --5 N''表示Unicode格式字符串
select datalength(convert(varchar(50),N'狮lion')) --6
select len(N'狮lion') --5
select datalength(N'狮lion') --10

接下来我们分析一下为何会这样.
len返回字符串的字符长度,既:一个汉字‘狮‘+4个字母‘lion‘=5个字符。每个汉字和字母都占一个字符长度。
datalength返回字符串的字节长度。对于字节长度,需要理解:一般编码模式下,汉字和英文字母所占字节是不一样的。一般来说,汉字占2个字节,英文字符占一个字节。而对于Unicode编码,汉字和英文字母都占2个字节。
讲解一下varchar和nvarchar的区别,varchar是普通编码的字符串,nvarchar是Unicode编码的字符串,对应例子,就是对汉字‘狮‘来说,varchar格式的字符串长度为1,nvarchar格式的字符串长度为2。

len(convert(varchar(50),N'狮lion')) --返回字符长度,'狮lion',一共5个字符,varchar格式字符
len(N'狮lion') --返回字符长度,'狮lion',一共5个字符,nvarchar格式字符
datalength(convert(varchar(50),N'狮lion')) --返回字节长度,varchar格式字符'狮lion','狮'占2个字节,
      --'lion'中每个字母占用一个字节,共占用4个字节
datalength(N'狮lion') --返回字节长度,Unicode格式字符,汉字'狮'占2个字节,
    --'lion'中每个字母占用2个字节,共占用8个字节

文章引用:https://blog.csdn.net/oncealong/article/details/37573927

b. 如何查看数据库的编码格式。

--查看sqlserver数据库的编码格式
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage');
查询结果: 
936 简体中文GBK 
950 繁体中文BIG5 
437 美国/加拿大英语 
932 日文 
949 韩文 
866 俄文 
65001 unicode UFT-8

c. varchar和char和nvarchar三者的区别

  1. char是定长(固定长度),效率高于varchar;也就是当你输入的字符小于你指定的数目时,例如:char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
  2. varchar[n]是变长且非unicode字符数据类型,n的取值在1到8000之间,该类型英文字符占一个字节,中文字符占两个字节。优点:更加合理利用空间,不会造成过多的浪费。
  3. nvarchar[n]是变长且unicode字符数据类型,n的取值在1到4000之间,该类型字符无论中英文都占取两个字节
    其中varchar和nvarchar两字段分别有字段值:你好hello
    那么varchar字段占2×2+5=9个字节的存储空间,而nvarchar字段占7×2=14个字节的存储空间。
    如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar

文章引用:https://www.cnblogs.com/flqcchblog/p/4560781.html

(SqlServe)关于字符串长度被截断的问题

标签:rop   大于   uri   c_str   str   code   prope   eal   nvarchar   

热心网友 时间:2022-04-11 05:11

字符截断就是所要录入的数据长度超出字段大小,你自己好好检查一下要了录入的字段吧
另外,尽量避免使用表设计编辑数据,会有很多问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕甲状腺激素偏高正常吗 怀孕检查甲状腺素偏高是什么原因引起的 怀孕了甲状腺功能偏高是怎么回事 怀孕甲状腺高是什么引起的 孕中期促甲状腺激素偏高是什么原因 重钢别墅靠谱吗 重刚别墅的致命缺点 重钢别墅的优点和缺点各是什么 积食可以吃什么 车子换了点火线圈,分缸线,火花塞以后车子打不着。这是什么原因 win7 鼠标双击打开文件夹时,总是重命名,鼠标双击速度调的太快了。 在公司交的社保如果没交够十五年离职了,能转回老家继续交吗? 老师在qq群课堂里上课能边讲边板书吗? 鼠标双击重命名 圆锥曲线求点轨迹的题目!!急啊!~ 为什么双击或单击文件夹后总是重命名? 光伏发电有光污染吗? 外地城镇户口在北京交有社保但是不满15年 辞职后社保怎么办 还能自己继续交吗_百度问一问 鼠标双击变成重命名,这是什么原因! 公司社保交没满15年要辞职回家了,请问怎么办呢? 鼠标单击桌面图标会出现“重命名”的选项,是怎么回事? 如果没交满15年的社保现在不交了,以前个人交的钱可以退回吗? 给陈姓男孩起名~缺木,缺水 鼠标左键双击变成对文件夹重命名,连点3下才是进入文件 第一部以法典命名的法律叫什么?现在还在使用吗? 之前公司交的社保现在辞职了 但是还没有交够15年 这种情况怎么办? 什么昰民法典 光伏电站对荒漠化的作用 转岗人员15年社保没交满辞职了怎么办转岗人员15年社保没交满辞职了怎么办? 看完新婚姻法的规定,很多网友表示不敢结婚了,这是为何? 我已到法定退休年龄,但社保未交满15年,差2年,单位要求离职,我能从单位领到补偿金吗? 社保交够15年辞职后社保怎么处理 鼠标单击和双击都变成重命名 鼠标点上就自动重命名 鼠标点击图标时,变成“重命名”状态。经常会这样,重新设置鼠标、换鼠标、重装系统都没用! 圆锥曲线综合题。求详细过程 鼠标选中文件不能重命名是怎么回事 报考成人自考本科需要什么条件 黄瓜胡萝卜凉拌的做法 苹果11充电显示可能不支持此配件 有QQ号和,但不是好友,怎么加他的抖音? iphone11不支持此配件怎么办 iphone11插上数据线不询问 不支持配件苹果手机 世界洋流的分布规律及影响 世界洋流分布规律 苹果11原装充电器不能用了? 全球洋流的分布及其规律 世界海洋表层洋流分布夏季 孩子做事拖沓,怎样说都不听,该怎么办