2012-03-05 25 views
1

我想從表中使用瀏覽器路徑列的表中獲取信息。這就是查詢的樣子:這個查詢有什麼問題?路徑

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,並返回的東西(雖然比我想要的更多)。

我以爲也許這是文字\所以我用\\替換了\,但那也沒有效果(仍然沒有返回任何東西)。

有誰知道爲什麼這不起作用?

謝謝。

編輯:我知道*是不是通配符,它​​是路徑上的一部分。我們用它在不同的PC上啓動不同的瀏覽器。

+0

如果您不粘貼兩個表中的實際數據,則很難說明。 – 2012-03-05 15:29:04

+0

你試過%iexplore.exe%嗎?或%* iexplore%? – roymustang86 2012-03-05 15:34:34

+0

如果在原始查詢中用'%'替換'*'會發生什麼? – JJJ 2012-03-05 15:34:39

回答

1

您必須避開類似\\\\的反斜線。嘗試:

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

聖母聖母!它有效... Dafuk? 謝謝。 – Nacht 2012-03-05 16:19:32

0

的問題是與該Like語法什麼是應該的*是匹配的反對,因爲*不是特殊字符%意味着匹配任何字符0以上_手段匹配任意一個字符。

此外,如果您不能使用像來完成你需要什麼,我會考慮Regexp它使用正則表達式來匹配,而且通常更容易適應那麼簡單Like比較

+0

'*'不應該匹配任何東西,它是路徑的一部分。 – Nacht 2012-03-05 15:40:05

0

好第一關*是不是一個有效的通配符mysql儘可能接近我可以告訴哪些是爲什麼查詢返回什麼(它正在尋找一個路徑'*')。我猜不知道你要找的是%通配符的一些變種。它可以位於字符串的中間,例如:

where b.browserpath like 'C:%iexplore' 

這將返回以「iexplore」結尾的「C」的所有路徑。這:

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

返回的「C:\ Program Files文件」的路徑任何有名爲「.exe」等的結局。