SQL SERVER不认全角和半角
2005-05-25 16:20
218 查看
不管是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 //////////////////////////////////////////////////////////
//////////////////////// 去除全角用户名 ///////////////////
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 //////////////////////////////////////////////////////////
相关文章推荐
- SQL Server中全角和半角字符的比较问题
- SQL Server中全角和半角字符的比较问题
- SQL Server中全角和半角字符的比较问题
- sql server 2005全角与半角字符转换
- SQL Server中全角和半角字符的比较问题
- SQL Server中全角和半角字符的比较问题
- SQL SERVER 数据库储存的值里面前后有空格,有可能是全角或者半角空格,如何在查询中处理
- SQL SERVER 全角和半角的解决方法
- SQL Server中全角和半角字符的比较问题
- SQL Server中全角和半角字符的比较问题
- SQL Server中全角半角字符查询使用的详细说明
- SQL Server中全角半角的转换
- SQL Server中全角和半角字符的比较问题
- Sql Server 中汉字处理排序规则,全角半角
- SQL函数全角转化为半角数字
- JS全角转半角技术
- java 字符串全角半角转换
- iOS 标点符号半角与全角转换
- 输入的全角字符转换成半角字符--css、js、ASP.NET
- C#中判断字符串是全角还是半角的实现代码