免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2493 | 回复: 8
打印 上一主题 下一主题

使用like查询和使用split分割字符串的奇怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-31 12:02 |只看该作者 |倒序浏览
1、使用like进行查询:
参数是String tj1="3"
SQL是:select * from view where fuids like '%_"+tj1+"_%'";
我的本意是要查询含有“_3_”的记录,但现在的查询结果是含有"_3"的记录都出来了,比如“_0_5_23_29_”,“_0_5_23_”;

2、使用split分割字符串
如果字符串使用“|”标记分割位置,比如String aa="11|22";
则String[] bb=aa.split("|");
bb[0]的值就是“1”
bb[1]的值就是“1”
bb[2]的值就是“|”
bb[3]的值就是“2”
bb[4]的值就是“2”

但如果用“:”作为分割符,则结果就正常:
String aa="11:22";
则String[] bb=aa.split(":");
bb[0]的值就是“11”
bb[1]的值就是“22”


不明白这是怎么回事,还有,这种现象只在jsp里是这样,在javascript里,用“|”分割就是正常的

论坛徽章:
0
2 [报告]
发表于 2009-05-31 12:37 |只看该作者
1.  select * from view where fuids like '%\_"+tj1+"\_%'";

2. String[] bb=aa.split("\\|");

论坛徽章:
0
3 [报告]
发表于 2009-05-31 15:58 |只看该作者
select * from view where fuids like '%\_"+tj1+"\_%'";
提示“非法转义字符”

论坛徽章:
0
4 [报告]
发表于 2009-05-31 16:41 |只看该作者
String tj11="\_"+tj1+"\_";
也提示“非法转义字符”

论坛徽章:
0
5 [报告]
发表于 2009-05-31 17:11 |只看该作者
如果使用这个:select * from view where fuids like '%[_]"+tj1+"[_]%'";
就什么都查不出来了

论坛徽章:
0
6 [报告]
发表于 2009-05-31 21:22 |只看该作者
如果是java或jsp程序中,则
“select * from view where fuids like '%\\_"+tj1+"\\_%'";

论坛徽章:
0
7 [报告]
发表于 2009-06-01 08:28 |只看该作者
原帖由 caojiqun 于 2009-5-31 21:22 发表
如果是java或jsp程序中,则
“select * from view where fuids like '%\\_"+tj1+"\\_%'";

试过了,也不行,用上面的查询出来的结果跟不加\\一样
结果是含有"_3"的记录都出来了,比如“_0_5_23_29_”,“_0_5_23_”

现在,把数据库中的_符号改成:问题就解决了

论坛徽章:
0
8 [报告]
发表于 2009-07-14 14:18 |只看该作者
对于oracle :select * from view where fuids like '%\_3\_%'  escape '\';

[ 本帖最后由 javajavaclone 于 2009-7-14 14:20 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-07-14 15:43 |只看该作者
原帖由 javajavaclone 于 2009-7-14 14:18 发表
对于oracle :select * from view where fuids like '%\_3\_%'  escape '\';

这么老的帖,精神可嘉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP