2012-03-05 3 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

実際のデータを両方のテーブルから貼り付けるのでは、わかりにくいです。 –

+0

%iexplore.exe%を試しましたか?または%* iexplore%? – roymustang86

+0

元のクエリで '*'を '%'に置き換えるとどうなりますか? – JJJ

答えて

1

\\\\のようなバックスラッシュをエスケープする必要があります。試してみてください:

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

嫌な男の母!それは働く... Dafuk?おかげさまで – Nacht

0

*特殊文字%ではないので問題は*のに対して、一致することになっているものLike構文であることは0以上_手段は任意の1つの文字に一致する任意の文字に一致することを意味します。 *オフ最初また

あなたは私が照合する正規表現を使用するRegexpになります必要なものを達成するためのように使用し、通常より適応可能であることができないならば、簡単なLike比較

+0

'*'は何もマッチしないはずですが、パスの一部です。 – Nacht

0

まあのための有効なワイルドカードではありませんmysqlに近いところでは、クエリが何も返さない理由がわかります(それには '*'があるパスを探しています)。あなたが探しているものを正確に知らずに私の推測では、%ワイルドカードのいくつかの亜種が動作するということです。これはIEXPLOREで終わる「C」上のすべてのパスを返します

where b.browserpath like 'C:%iexplore' 

:それは、次のような文字列の途中にあることができます。これは:

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

は、 "C:\ Program Files"の末尾に ".exe"などのパスを返します。

関連する問題