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

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

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

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

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

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

/*--------------------------------------------------這是一個在我實際一個項目中遇到的問題。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 數據庫
主站蜘蛛池模板: 华人色 | 天天夜天干天天爽 | 亚洲天堂视频网 | 国产欧美综合一区二区 | 国产精品一区二区三区高清在线 | 免费成人高清视频 | 国产精品亚洲欧美日韩一区在线 | 亚洲欧美久久精品1区2区 | 国产日产久久 | 中文字幕亚洲日本岛国片 | 日韩久久一区二区三区 | 国产精品视频久久久久 | free性丰满白嫩白嫩的hd | 国产精品久久久久影院色 | 久久中文字幕乱码免费 | 欧美刺激午夜性久久久久久久 | 久久国产欧美另类久久久 | 久久精品.com | 草草影院欧美三级日本 | 一级特黄国产高清毛片97看片 | 欧美最猛性xxxxx亚洲精品 | 欧美笫一页 | 中文字幕亚洲国产 | 久久国产精品久久国产精品 | 日本一级特黄aa毛片免费观看 | 亚洲综合国产一区在线 | 国产成人在线小视频 | 国产自制一区 | 久久精品国产亚洲片 | 成年网在线观看免费观看网址 | 一级毛片视频免费观看 | 日韩99在线| 国产伦精品一区二区三区精品 | 亚洲国产成人久久综合一区 | 亚洲一区二区三区一品精 | 日韩高清一区二区 | 国产日本三级欧美三级妇三级四 | 欧美大片a一级毛片视频 | 一本一道波多野结衣456 | 国产精品免费一级在线观看 | 男人都懂的网址在线看片 |