2012-07-19 76 views
0

我有一個SQL數據庫與成千上萬的網址。我經常使用php5在Url中進行更新,而無需進行任何修改。如何在查詢中使用LIKE和_

現在

,我想附加僅不存在於數據庫中的URL,我用這個SQL查詢

$q = $urlToCheck; 
SELECT * FROM pligg WHERE rawUrl LIKE '$q%' 

這裏的問題是,一些URL,檢查數據庫做到這一點這是已經在數據庫就像

http://example.com/a_b_c.html 
http://example.com/a1b1c.html 

如果我運行查詢

$q = 'http://example.com/a_b'; 
SELECT * FROM pligg WHERE rawUrl LIKE '$q%' 

的它會返回兩個Url。我只想返回完全匹配的網址。所以,我只想得到這個網址

http://example.com/a_b_c.html 

任何幫助嗎?

回答

5

對於MySQL您需要轉義_;它應該是\_。對於MSSQL應該[_]

_編輯
Here's the manual page和逃避通配符%_爲MySQL。如果你喜歡,你實際上可以指定轉義字符。

$q = 'http://example.com/a_b'; 
$qescaped = str_replace('_', '\_', $q); 

$result = my_execute_query_function($qescaped); 

Here's the manual page for MSSQL。 (另外:MSSQL也允許你指定轉義字符(我不知道))。)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。'。

其他類似0123B,Oracle等RDBMS可能有自己的轉義字符和/或指定方式。檢查他們各自的手冊頁(鏈接爲了您的方便)。

+0

如果是SQL Server,我認爲語法是'[_]',但是是的。 +1 – 2012-07-19 16:25:28

+0

@DavidM正確。 – RobIII 2012-07-19 16:31:08

+0

我在這裏的任何地方都看不到DBMS?它只是說SQL?所以可能值得包括其他選項... – 2012-07-19 16:34:08

相關問題