我正在尝试使用表中的浏览器路径列从表中获取信息。这就是查询的样子:
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上启动不同的浏览器。
答案 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"等等。