现在我有一堆数据以格式存储在我的数据库中。
this.is.the.name
而不是有空格,有一段时间。
我只是想知道如何使用mysql搜索来处理像空格一样的句子?或者只是拥有它,如果用户搜索“这就是”它将返回条目。
答案 0 :(得分:3)
与其他答案相比,您可以在搜索字词上执行替换,而不是在字段上进行替换。通过这种方式,MySQL仍然可以使用field1
上的索引。假设句点总是在那里而不是空格
SELECT field1, field2 FROM table WHERE field1 = REPLACE('user input', ' ', '.')
如果你想在没有圆点的情况下进行可视化,你也可以在SELECT
部分进行反向替换:
SELECT REPLACE(field1, '.', ' '), field2 FROM table
WHERE field1 = REPLACE('user input', ' ', '.')
或者您甚至可以考虑更新您的数据库,而不是与之抗争:
UPDATE table SET field1 = REPLACE(field1, '.', ' ')
答案 1 :(得分:2)
您可以在replace
clausole中使用mysql的WHERE
函数:
replace([field_name],'[string_to_find]','[string_to_replace]');
答案 2 :(得分:0)
您可以使用REPLACE功能。
SELECT REPLACE('this.is.the.name', '.', ' ');
--> 'this is the name'
答案 3 :(得分:0)
您可以regular expression search查找匹配的条目。在搜索数据库之前,您必须进行一些预处理。
将下划线字符用作单个通配符:
SELECT name FROM table WHERE name LIKE "this_is_the_%";
# returns
# - this.is.the.name
# - this-is-the-name
# - this.is_the_name
# - this is the name
也查看REGEXP搜索。