国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

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

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

/*作者:翁彥[email protected]

/*--------------------------------------------------這是一個在我實際一個項目中遇到的問題。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(上海)。

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

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

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

collate Chinese_PRC_CI_AS_WS

(所影響的行數為 0 行)

看來這個問題解決了。

重要提示:

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

SELECT *

FROM ::fn_helpcollations()

可以查詢所有排序規則的信息。

查出所有中文排序規則的信息

SELECT * FROM

(

SELECT *

FROM ::fn_helpcollations()) A

WHERE name like 'Chinese%'

標簽: Sql Server 數據庫
主站蜘蛛池模板: 草视频在线观看 | 日韩一级片在线免费观看 | 日本作爱 | 色樱桃影院亚洲精品影院 | 深夜福利视频在线观看免费视频 | 中国美女隐私无遮挡免费视频 | 欧美深夜影院 | 国产在线精品成人一区二区三区 | 国产精品日本一区二区在线播放 | 成人久久免费视频 | 国产在线一区二区 | 一级做a爱过程免费视频麻豆 | 黄到让你下面湿的视频 | 日韩免费在线视频 | 日本韩经典三级在线播放 | 日本久久久久久久久久 | 国产一级高清 | a级毛片免费完整视频 | 国产乱子精品免费视观看片 | 亚洲美女精品视频 | 成人免费夜片在线观看 | free性欧美嫩交 | 91手机看片国产福利精品 | 欧美性色xo在线 | 国产色a在线观看 | 99这里只有精品视频 | 亚洲欧美日韩精品高清 | 一a一片一级一片啪啪 | 播播网手机在线播放 | 色成人亚洲 | 美女张开双腿让男人桶 | 美女扒开腿让男人桶 | 亚洲精品久久久久网站 | 国产成人成人一区二区 | 中国一级淫片aaa毛片毛片 | 国产欧美日韩一区二区三区在线 | 成人在线观看不卡 | avtt天堂网永久资源手机版 | 亚洲视频在线免费观看 | 仑乱高清在线一级播放 | 506rr亚洲欧美 |