这个查询出了什么问题?路径

时间:2012-03-05 15:25:03

标签: mysql path sql-like

我正在尝试使用表中的浏览器路径列从表中获取信息。这就是查询的样子:

select * from selwowscheduler sc
join browser b on sc.scheduledbrowser = b.browserid

where b.browserpath like '*iexplore C:\Program Files\Internet Explorer\iexplore.exe'

事实是,这没有任何回报。我可以放%iexplore.exe而不是*iexplore C:\Program Files\Internet Explorer\iexplore.exe,这会返回一些东西(虽然比我想要的多)。

我想也许是文字\所以我用\替换了\\,但这也没有用(Still什么都不返回)。

有谁知道为什么这不起作用?

感谢。

编辑:我知道*不是外卡,它是路径上的一部分。我们使用它在不同的PC上启动不同的浏览器。

3 个答案:

答案 0 :(得分:1)

你必须逃避像\\\\这样的反斜杠。尝试:

where b.browserpath like '%iexplore C:\\\\Program Files\\\\Internet Explorer\\\\iexplore.exe'

答案 1 :(得分:0)

问题在于Like语法*应该匹配什么,因为*不是特殊字符%意味着匹配任何字符0或更多,_表示匹配任何一个字符。

此外,如果您无法使用喜欢完成所需的内容,我会调查使用正则表达式匹配的Regexp,并且通常比简单Like比较更具适应性

答案 2 :(得分:0)

首先关闭*不是mysql的有效通配符,因为我可以知道这是为什么查询没有返回任何内容(它正在寻找带有' *&#的路径39;在其中)。我不知道你究竟在寻找什么,我的猜测是%通配符的某些变体可行。它可以位于字符串的中间,例如:

where b.browserpath like 'C:%iexplore'

这将返回" C"在iexplore结束。这样:

where b.browserpath like 'C:\Program Files%.exe'

返回" C:\ Program Files"上的任何内容的路径。结尾为" .exe"等等。