我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評(píng)論 :: 0 Trackbacks

          /*------------------------------------------------------------------------------------

          /*歡迎轉(zhuǎn)載,請(qǐng)保留本聲明信息

          /*作者:翁? 彥? enhydraboy@yahoo.com.cn

          /*------------------------------------------------------------------------------------

          這是一個(gè)在我實(shí)際一個(gè)項(xiàng)目中遇到的問題。03BHL01001(上海)和03BHL01001(上海)比較的結(jié)果是一樣的。導(dǎo)致引起的重復(fù)的主鍵問題。

          03BHL01001(上海)和03BHL01001(上海)差別,就在于前者的括號(hào)是全角的括號(hào)字符,后者是半角的括號(hào)字符。全角的括號(hào)字符和半角的括號(hào)字符的ascii碼顯然是不一樣的。全角的( ASCII碼是0xA3A8 ,而半角的( 是0x28。那么為什么SQL Server會(huì)認(rèn)為是一樣的呢?

          問題其實(shí)就出在數(shù)據(jù)庫的排序規(guī)則上,讓我們?cè)谧屑?xì)研讀一下SQL Server的文檔。SQL Server的排序規(guī)則由這樣幾部分組成,代碼頁、區(qū)分大小寫、區(qū)分重音、區(qū)分寬度。最后一個(gè)在SQL Server的聯(lián)機(jī)幫助中沒有進(jìn)一步提及,其實(shí)本篇遇到的問題就是由于這個(gè)原因造成的。區(qū)分寬度:指定 SQL Server 區(qū)分相同字符的單字節(jié)表示法(半角)和雙字節(jié)表示法(全角)。如果沒有選擇,則 SQL Server 將認(rèn)為相同字符的單字節(jié)表示法和雙字節(jié)表示法等效。

          缺省,安裝SQL Server中文版的時(shí)候,SQL Server幫你選擇的排序規(guī)則是Chinese_PRC_CI_AS(Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive),是中文,不區(qū)分大小寫、區(qū)分重音、不區(qū)分假名、不區(qū)分寬度。因此,自然就認(rèn)同03BHL01001(上海)=03BHL01001(上海)。

          所以,正確的選擇應(yīng)該是,后綴為WS的中文排序規(guī)則。本例中我們應(yīng)該選擇Chinese_PRC_CI_AS_WS。

          我們來看一下,指定排序規(guī)則是Chinese_PRC_CI_AS_WS后,怎么樣了?

          ?

          select 1 where '03BHL01001(上海)'='03BHL01001(上海)'

          collate Chinese_PRC_CI_AS_WS

          ?

          -----------

          ?

          (所影響的行數(shù)為 0 行)

          看來這個(gè)問題解決了。

          重要提示:

          如何察看使用那個(gè)排序規(guī)則呢?可以使用下面的SQL語句。

          SELECT *

          FROM ::fn_helpcollations()

          可以查詢所有排序規(guī)則的信息。

          查出所有中文排序規(guī)則的信息

          SELECT * FROM

          (

          SELECT *

          FROM ::fn_helpcollations()) A

          WHERE name like 'Chinese%'



          posted on 2007-02-12 08:15 java_蟈蟈 閱讀(223) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
          主站蜘蛛池模板: 大田县| 图木舒克市| 榆中县| 吉隆县| 上蔡县| 正镶白旗| 茌平县| 咸宁市| 汝城县| 镇巴县| 宁乡县| 郁南县| 栖霞市| 东丰县| 涡阳县| 佛教| 沂水县| 政和县| 福鼎市| 大埔区| 宜章县| 平武县| 广河县| 东阿县| 芦山县| 宣武区| 隆回县| 镇康县| 贡山| 法库县| 沛县| 十堰市| 娄底市| 安达市| 万年县| 林口县| 卢龙县| 江达县| 荔浦县| 平遥县| 雅江县|