首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL里有不看得出字符查询中遇到的奇怪BUG,求解

2012-09-27 
SQL里有不可见字符查询中遇到的奇怪BUG,求解今天遇到一个sql的奇怪bug:chrw(31)是不可见字符,fuck15+chr

SQL里有不可见字符查询中遇到的奇怪BUG,求解
今天遇到一个sql的奇怪bug:
  chrw(31)是不可见字符,"fuck15"+chrw(31)+"789"组成的字符串在sql里显示是"fuck15`789",5和7中间有一个不可见的字符,暂用"`"代替。
  在查询的时候,where语句是lotno > "fuck15!789" 居然把"fuck15`789"那条记录也查询出来啦,
“!”是ASCII码里最小的可见字符,即chr(33),但比chr(31)大,"fuck15"+chrw(31)+"789"小于"fuck15"+chrw(33)+"789",
"fuck15`789"这条记录不应该被查询出来,但是结果是"fuck15`789"那条记录被查询出来啦,哪位大神能解释一下

[解决办法]
字符串的比较不是通过ASCII码来比较的,字符串大小的比较是通过选择的排序规则
[解决办法]

SQL code
--经测,没被选出来with t(col) as(select 'fuck15'+char(31)+'789'union all select 'fuck15!789'union all select 'fuck15'+char(33)+'789')select * from t where col>='fuck15!789'/*col----------fuck15!789fuck15!789(2 row(s) affected)*/ 

热点排行