没有空格的mysql搜索

时间:2012-05-18 14:15:34

标签: php mysql

我的数据库中有一个名单列表,我必须找到我在网址中传递的名称的ID。

我的问题是,我在url中传递的名称中没有空格,而保存的记录将在数据库中。当我搜索数据库时,我没有找到任何记录。

例如数据库记录是“我的名字”,而我将在网址中传递并搜索的是“myname”

if(isset($_GET["name"])) $name = $_GET["name"];

SELECT id
FROM table
WHERE name Like '%$name%'

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

// id don't know the exact syntax, but this is what you are searching for I guess:

// replace spaces with nothin temporarily, then check equal (=) not like (%%) if name is exactly the same (except the spaces)

SELECT id, REPLACE(name, ' ', '') AS tmp FROM table WHERE tmp='%$name%'

答案 1 :(得分:3)

显然不是正确的存储或搜索方式,但如果必须,请尝试用空格替换空格:

SELECT id
FROM table
WHERE REPLACE(`name`,' ','') LIKE '%$name%'

答案 2 :(得分:2)

我认为最佳实践是存储另一个列,称为name_nospaces,并在插入My Name记录时将myname作为计算值插入其中。您还可以创建一个包含myname作为列的视图并对其进行查询,但原始表中另一列的优点是可以将其编入索引以便快速检索。