求助字符集对唯一性索引的影响

xiaolang88 2006-01-13 09:45:54
环境:windows 2000 sever 中文版
sql server 2000 中文版sp4 ,字符集是默认的

经过测试,在sql server中表中有字段 itemname nvarchar(40),我在该字段上建立唯一性索引,在向表中增加数据时,例如一个记录中itemname为(密度),括号是中文的;再加一条记录itemname为(密度),括号是英文的,会引起“违反unique key约束,不能插入重复键"的错误。

我发现对一些中文字符如%和%,-和-,(和(,)和)都会出现上面的错误
我的推测是由于sql server中这些字符的索引值是相同造成的。有无办法解决这个问题?
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolang88 2006-01-15
  • 打赏
  • 举报
回复
用 binary collation (chinese_prc_bin) 定义列, 这样每个字符不会被忽略掉
谢谢各位
xiaolang88 2006-01-13
  • 打赏
  • 举报
回复
怎么改啊,数据从oracle数据库提取,然后存放到sql server中,在程序(vb.net)中(和(是不一样的,在数据库那里却当成相同。真的没有办法解决?
lsqkeke 2006-01-13
  • 打赏
  • 举报
回复
难道sp4就是那样的?
lsqkeke 2006-01-13
  • 打赏
  • 举报
回复
SQL Server 2000默认是要区分半角和全角字符的吧?!
可能是在建表语句中,单独指定了改主键字段的字符集样式吧
xiaolang88 2006-01-13
  • 打赏
  • 举报
回复
那没有办法解决?邹老大在吗
ReViSion 2006-01-13
  • 打赏
  • 举报
回复
哈哈,是呀,如你所说,可能SQL内部进行了转换
子陌红尘 2006-01-13
  • 打赏
  • 举报
回复
印象中SQL Server 2000不区分半角和全角字符。
xiaolang88 2006-01-13
  • 打赏
  • 举报
回复
to: put2006(冷眼螃蟹)
还是不行
错误提示:
服务器: 消息 448,级别 16,状态 2,行 1
排序规则 'Chinese_RPC_CS_AS_KS_WS' 无效。
put2006 2006-01-13
  • 打赏
  • 举报
回复
alter table tablename alter column columnname nvarchar collate Chinese_RPC_CS_AS_KS_WS即可

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧