2012-07-19 80 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

相关问题