首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnsiString被截断,空间很大

AnsiString被截断,空间很大
EN

Stack Overflow用户
提问于 2012-08-08 22:11:41
回答 1查看 300关注 0票数 1

我正在插入一行,其中包含一个定义为varchar(50)JOBCODE字段。当该字段的字符串超过20个字符时,我从SQL Server收到一个错误,警告该字符串将被截断。

我怀疑这可能与Unicode宽字符有关,但我认为25个字符就可以通过。

以前有没有人见过这样的东西?我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-08 22:23:34

我认为这里还有其他的问题。

无论编码如何,VARCHAR(50)都应为50个字符

举个例子

代码语言:javascript
复制
CREATE TABLE AnsiString
(
    JobCode VARCHAR(20), -- ANSI with codepage
    JobCodeUnicode NVARCHAR(20) -- Unicode
)

在两列中插入20个unicode字符

代码语言:javascript
复制
INSERT INTO AnsiString(JobCode, JobCodeUnicode) VALUES ('葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0', 
                                                        N'葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0')

select * from ansistring

返回

代码语言:javascript
复制
?2?4?6?8?0?2?4?6?8?0    葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0

不出所料,?为未映射到ANSI的字符插入,但无论哪种方式,我们仍然可以插入20个字符。

你的桌子上有没有触发器?它会是另一个完全不同的专栏吗?您的数据访问层会不会以某种方式将您的unicode字符串扩展为其他内容(例如byte[])?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11866369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档