打印本文 打印本文 关闭窗口 关闭窗口
SQL SERVER不认全角和半角
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1078  更新时间:2007/11/14 13:07:15  文章录入:mintao  责任编辑:mintao

 不管是c/s还是b/s的开发模式,随着window操作系统的不断深入人心,其日渐强大的数据库SQL SERVER也逐渐被大家所认可。 在一次偶然的错误处理中,发现居然全角字符和半角字符都能通过SQL SERVER的条件判断。 例如: select * from t_xtgl_user where user_code = ''''lyy''''   (半角) select * from t_xtgl_user where user_code = ''''lyy'''' (全角) 上面两个话都能查到user_code为''''LYY''''的用户信息。 而全角字符记载入数据库后,对程序后面的字符判断和比较容易产生混乱,特别是与其它数据库交叉混用,造成意向不到的麻烦。 对于这种情况,我们可以采取两种方式: 1、禁止使用全角,当用户使用全角字符时,提示用户输入非法字符(全角),提示用户重新输入。 2、允许使用全角,当用户使用全角字符时,系统自动将其转化为半角字符。 当然第二种办法是最优的,提供用户最大的可操作性。 以下为PB代码,暂定用户录入有效字符为 0-9 a-z A-Z

  //////////////////////// 去除全角用户名 ///////////////////

li_len = len(gs_usercode) For i = 1 To li_len ls_letter = mid(gs_usercode, i,1) If ( ls_letter < ''''0'''' ) Or ( ls_letter > ''''9'''' And ls_letter < ''''A'''' ) Or ( ls_letter > ''''Z'''' ) Then // MessageBox(''''提示信息'''',''''用户名输入错误,请输入正确的半角英文字符!'''') // Return 1 i++ li_Asc = Asc(mid(gs_usercode, i,1)) ls_letter = char(li_Asc - 128) // -128 End If ls_UserCode += ls_letter Next gs_usercode = ls_UserCode //////////////////////////////////////////////////////////

打印本文 打印本文 关闭窗口 关闭窗口