2014-01-22 40 views
1

我需要搜索整个单词不是他们使用SQL LIKE来匹配完整的单词

$q = $_GET['q']; 
SELECT * FROM table WHERE column LIKE '% $q %' 

的一部分。例如,如果$q = mag它不应该找杂志 我已经试过了用户发布的解决方案,但它没“科技工作

像正则表达式和CONCAT

PS:我的数据库列是一个大的文本

+0

MATCH()只适用于myiasm数据库类型,虽然没有 – Dave

回答

1

我不知道这是否会解决您的问题,或者你已经尝试过,但给它一个尝试, 查找单词边界具有以下REGEXP

SELECT * FROM table WHERE column RLIKE "[[:<:]]$q[[:>:]]"; 
+0

它在我的查询返回任何 –

+0

,你可以做一个事情。你可以打印查询,并直接在phpMyAdmin –

+0

我没有运行..它曾在第一 –

0

不要使用LIKE ...在这种情况下仅使用比较。事情是这样的:

SELECT * FROM table WHERE column = '$q'; 
+1

,OP想要那个'“富barbaz b AZ巴兹“'将为'发现”“',而不是'”栏“',所以它不是平等 –

+0

但用户说,当'$ Q ='mag''然后抓取行包含'mag'而不是'magazine'。只是作为'magazine'这个简单的查询会给输出。 @AlmaDo ..可能是我误会了...不知道 –

+0

'$ q'我得到它从URL用户在文本框写整个单词不是它的一部分@Butterfruit –

0

如果你的话用空格分开,然后加两侧空间:

SELECT * 
FROM table 
WHERE concat(' ', column, ' ') LIKE '% $q %';