SQL SERVER不认全角和半角

发表于:2007-06-07来源:作者:点击数: 标签:
不管是c/s还是b/s的 开发 模式,随着window操作系统的不断深入人心,其日渐强大的 数据库 SQL SERVER也逐渐被大家所认可。 在一次偶然的错误处理中,发现居然全角字符和半角字符都能通过SQL SERVER的条件判断。 例如: select * from t_xtgl_user where user

 不管是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 //////////////////////////////////////////////////////////


原文转自:http://www.ltesting.net