数据库存的是一个路径,比如D:\FileUpload\2009\ok\系统文档\J2EE.exe,这样设计主要是考虑到下载的方便,用户查询的时候要用模糊查询列出相关信息,只是查询文件名,也就是J2EE.exe,我写的SQL语句是:select * from tablename where name like “j2ee.exe” 我只想让输入的“J2ee.exe”值模糊查询最后一个“\”后的字符串,怎样才能匹配最后那几个字符,而不用全部模糊查询,用什么样的正则表达式来表示呢?
[b]问题补充:[/b]
我只想说 [quote]引用
我只想让输入的“J2ee.exe”值模糊查询最后一个“\”后的字符串,怎样才能匹配最后那几个字符
为什么不用lastIndexOf(),然后再取后面的文件名(J2ee.exe);
[/quote]
不是这个问题,我是要模糊查找,你不可能把数据库里面的所有路径都取出来lastindexof()
[b]问题补充:[/b]
[color=darkred][/color]我的意思是:当用户输入“j2”查找时就能模糊查找,不是全部输进去,那样就用不到正则表达式了。。。。
[b]问题补充:[/b]
[color=red]我的意思是:当用户输入“j2”查找时就能模糊查找,不是全部输进去,那样就用不到正则表达式了。。。。 [/color]
[b]问题补充:[/b]
[color=red]谢谢,walsh,可是格式是不确定的,不一定是.exe,能不能一个正则表达式,只匹配倒数第五个字符和"\"之后的字符[/color]
[size=large][color=red]你就没有认真看我上面给你回答的内容。[/color][/size]
[code="java"]str = "j2";//这个是你从前台获取的
str = "%\"+str+"%";//组合字符串 [/code]
[code="SQL"]select * from tablename where name like str;[/code]
如果你要获取指定的后缀名,我才那样说的,并且还用红色字体给你注解了,红色字体竟然你没有看到 :o
[quote]我只想让输入的“J2ee.exe”值模糊查询最后一个“\”后的字符串,怎样才能匹配最后那几个字符[/quote]
为什么不用lastIndexOf(),然后再取后面的文件名(J2ee.exe);
楼主你的SQL语句写的就有问题,SQL中不是有个%的匹配符吗,
[quote]%匹配符的含义:包含零个或更多字符的任意字符串[/quote]
所以你把你的SQL语句改为:
[code="SQL"]select * from tablename where name like "%j2ee.exe"[/code]
意思就是说,只查找以j2ee.exe,结尾的行。
那不是一样吗?
用户输入是在前台页面输入的吧,我举个例子:假如说,用户输入了一个字符串,"j2",然后服务器接收后,这个字符串赋给了一个变量str,那么你的SQL语句就可以这样写:
在你查找之前:
[code="java"]str = "j2";//这个是你从前台获取的
str = "%\"+str+"%";//组合字符串[/code]
[color=red]注:如果你想只返回以.exe结尾的文件,并且在文件名中含有j2,可以这样:[/color]
[code="java"]str = "%\"+str+"%.exe";//只返回文件中中含j2,且文件后缀是.exe的文件信息[/code]
SQL语句:
[code="SQL"]select * from tablename where name like str;[/code]