mssql特殊符号处理


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

在利用SELECT REPLACE(‘密水街办?’,’?’,”)发现得到的结果仍为密水街办?,没用将?去掉。
再用SELECT CHECKSUM(‘?’),CHECKSUM(”) 发现得到的结果都是0,说明二者并没有得到区分.
通过改变编码格式解决: SELECT REPLACE(‘密水街办?’ collate Chinese_PRC_BIN2,’?’,”)
查看mssql支持的编码:select * from ::fn_helpcollations()

详细:
mssql默认中文的编码为:Chinese_PRC_CI_AS即:
Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive
unicode字符集Chinese-PRC 大陆简体字,大小写不敏感,重音敏感,假名类型敏感,全角半角不敏感
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分   
_KI(KS) 是否区分假名类型,KI不区分,KS区分 
_WI(WS) 是否区分宽度 WI不区分,WS区分

假名类型:平假名是日语中表音符号的一种
重音:英文单词中的重音,如 ,’a’不等同于’á’。
用得最多的是大小写是否区分,全角是否区分,默认都是不区分

可看到默认全角半角,大小写不区分,若想区分,采用编码转换
IF (‘@’ = ‘@’ collate Chinese_PRC_CI_AS_WS)
PRINT ‘y’
ELSE PRINT ‘n’