我正在插入一行,其中包含一个定义为varchar(50)的JOBCODE字段。当该字段的字符串超过20个字符时,我从SQL Server收到一个错误,警告该字符串将被截断。
我怀疑这可能与Unicode宽字符有关,但我认为25个字符就可以通过。
以前有没有人见过这样的东西?我遗漏了什么?
发布于 2012-08-08 22:23:34
我认为这里还有其他的问题。
无论编码如何,VARCHAR(50)都应为50个字符
举个例子
CREATE TABLE AnsiString
(
JobCode VARCHAR(20), -- ANSI with codepage
JobCodeUnicode NVARCHAR(20) -- Unicode
)在两列中插入20个unicode字符
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返回
?2?4?6?8?0?2?4?6?8?0 葉2葉4葉6葉8葉0葉2葉4葉6葉8叶0不出所料,?为未映射到ANSI的字符插入,但无论哪种方式,我们仍然可以插入20个字符。
你的桌子上有没有触发器?它会是另一个完全不同的专栏吗?您的数据访问层会不会以某种方式将您的unicode字符串扩展为其他内容(例如byte[])?
https://stackoverflow.com/questions/11866369
复制相似问题