午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

SQL Server中全角和半角字符的比較問題

瀏覽:203日期:2023-10-29 08:46:38

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

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

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

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

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

缺省,安裝SQL Server中文版的時候,SQL Server幫你選擇的排序規(guī)則是Chinese_PRC_CI_AS(Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive),是中文,不區(qū)分大小寫、區(qū)分重音、不區(qū)分假名、不區(qū)分寬度。因此,自然就認同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 行)

看來這個問題解決了。

重要提示:

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

SELECT *

FROM ::fn_helpcollations()

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

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

SELECT * FROM

(

SELECT *

FROM ::fn_helpcollations()) A

WHERE name like 'Chinese%'

主站蜘蛛池模板: 国产精品一区二区av | 亚洲动态图| 欧美日韩a v| 黄色成年视频 | 超碰久热 | 九九热re | 亚欧精品视频一区二区三区 | 亚洲视频免费看 | 天天做夜夜爽 | 久久久综合久久 | 久久久小视频 | 国产精品女同一区二区 | 黄色片免费 | 影音先锋每日资源 | 日韩欧美在线观看一区二区 | 亚洲黄色片在线观看 | 操在线视频 | 三毛片 | 五月婷婷色综合 | 一级黄色片在线播放 | 四虎影视免费在线观看 | 久久久成人免费视频 | 日韩免费中文字幕 | 99久久这里只有精品 | 午夜看片网 | 又色又爽视频 | 国产精品人成在线观看免费 | 国产一级片免费 | 99热在线观看 | 亚洲美女在线观看 | 国产午夜精品一区二区三区嫩草 | 久久激情网 | 黄色男女视频 | 亚洲精品男人的天堂 | 99香蕉视频 | 91精品一区二区 | 日本成人一区 | 国产欧美精品区一区二区三区 | 五月天综合 | 中日韩欧美在线观看 | 成人免费看片39 |