永发信息网

SQL为啥不分半角与全角?

答案:1  悬赏:60  手机版
解决时间 2021-11-27 22:45
SQL为啥不分半角与全角?
最佳答案
这是一个实际一个项目中遇到的问题。03BHL01001(上海)和03BHL01001(上海)比较的结果是一样的。导致引起的重复的主键问题。    03BHL01001(上海)和03BHL01001(上海)差别,就在于前者的括号是全角的括号字符,后者是半角的括号字符。全角的括号字符和半角的括号字符的ascii码显然是不一样的。全角的( ASCII码是0xA3A8 ,而半角的( 是0x28。那么为什么SQL Server会认为是一样的呢?    问题其实就出在数据库的排序规则上,让我们在仔细研读一下SQL Server的文档。SQL Server的排序规则由这样几部分组成,代码页、区分大小写、区分重音、区分宽度。最后一个在SQL Server的联机帮助中没有进一步提及,其实本篇遇到的问题就是由于这个原因造成的。区分宽度:指定 SQL Server 区分相同字符的单字节表示法(半角)和双字节表示法(全角)。如果没有选择,则SQL Server 将认为相同字符的单字节表示法和双字节表示法等效。    缺省,安装SQL Server中文版的时候,SQL Server帮你选择的排序规则是Chinese_PRC_CI_AS(Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive),是中文,不区分大小写、区分重音、不区分假名、不区分宽度。因此,自然就认同03BHL01001(上海)=03BHL01001(上海)。bitsCN_com    所以,正确的选择应该是,后缀为WS的中文排序规则。本例中我们应该选择Chinese_PRC_CI_AS_WS。    SELECt *    FROM ::fn_helpcollations()    可以查询所有排序规则的信息。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
生完小孩大腿上有一点一点毛孔红红的怎么回事
赵国名将赵奢是什么成语故事
青竹林地址好找么,我有些事要过去,
上海茗弘实业发展有限公司怎么样?
i brush my teeth是什么意思
真丝都容易起皱吗?
自∽自∽的成语有哪些
回头见是什么意思
萨德能打击到俄罗斯吗
发动机怠速噪音不大跑快了噪音大,一般在70以
急!急!急!怀柔:北京京北技术学院男女生住
顺达生鲜超市我想知道这个在什么地方
网络上那些15,16,17岁的网红都干什么?看他
不会出现黑天鹅十九大可能有几种可能
3a+2b=11.8 2a+3b=12.2
推荐资讯
小学往事作文,仿照从百草园到三味书屋来写
京东比价插件求推荐?
160kW电机185铝线够用不
表达郁郁不得志的诗词都有哪些?
说说看装修阳台要投多少钱
我感觉还是单身比较轻松,谈恋爱反而会让自己
北京三箭和众鼎电子有限公司倒闭了吗?
secret love 百度云资源谁有
我一家是蒲江户口 能在成都买房吗
南通宜家到火车站坐几路车
一个苹果读后感50字
地铁1号线怎么去,胜太路
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?