黑马程序员技术交流社区

标题: 查询语句中的字符串比较 [打印本页]

作者: 黑马龙超    时间: 2012-6-15 17:24
标题: 查询语句中的字符串比较
本帖最后由 黑马龙超 于 2012-6-15 17:29 编辑

号码归属地查询中,为了得到输入号码的归属地,需要查询数据库中符合条件的记录,用到了select * from Table where StartNo<=@No and EndNo<=@No
这里的No为文本框中输入的电话号码,StarNo和EndNo分别为某个号码归属地一系列号码的开始号码和结束号码,都为字符串类型。
测试通过,但问题在于,字符串可以用<=和<=等运算符比较大小吗?又是怎么比较的呢?
作者: 黑马-杨鹏立    时间: 2012-6-15 18:17
比较字符串的大小??你指的是比较字符串的长度吧?如果是比较字符串的长度那就没问了,首先获取他的长度值,在进行比较,
2:如果你比较的数值型的字符串,那也可以比较,就是先获取你要比较的数值字符串,在转换为int类型,这样就可以比较了。。。值得注意的是在输入的时候你希望只是纯数字那就得禁用输入法,或者是通过键盘码指定能输入的按键,这样在调试的时候就可以把错误减小到最低。。。


说下禁用输入法在IE下有用在火狐是没用的 这个在网站开发的时候也是要注意的问题
作者: 王继光    时间: 2012-6-15 19:40
如果是 比较 两字符串 等于 或者  不等于, 直接用 =, !=
如果是比较 >=   <=  那么应该调用  string.compare() 方法吧,  你在 vs中 转到定义看一下, 就清楚, 此方法可以 顺序比较字符串的字符ASC2码大小, 返回比较结果。 但是你是写在 sql语句中, 所以我觉得用 比较字符串大小的办法去比较2个号码不是很合适。

我觉得换个思路: 把字符串先 按照  规律分割:(比如哪几位表示省份, 哪几位表示 是 移动还是联通等等)
然后转换为 int型 去比较,, 多比较几次 , 依次得到该号码的信息。



作者: 黑马-许泽宇    时间: 2012-6-16 01:21
如果字符串全是数字好像sql会自动转换为整形比较
作者: ren1015    时间: 2012-6-17 07:06
如果是英文字符,应该是从左到右按对应位置字符的asc码比较




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2