我有一个表 tblName 有字段和值
| ID | Name |
| 1 | Technical University |
| 2 | XYZ Lab Ltd. |
现在我必须将Name列与以下输入值匹配:
1- tech univ
2- tech universities
3- xyz Labs
我无法编写查询以从表中获取结果。 如果我将Name列与输入值 tech univ 或 tech university 匹配,那么查询应该从tblName响应结果集Technical University。
请建议。
先谢谢了。
答案 0 :(得分:2)
你可以做一件事地图名称到不同的名字,如
ID I_ID NAME
1 1 tech university
2 1 tech uni
3 1 tech univs
因此,此表将是您的搜索查询的链接I_ID是一个外键,它引用主表中的ID。我想这可以解决您的问题,您可以为单个名称定义多个名称。
此外,使用正则表达式以提高效率,您必须为此开发自定义函数,尽管REGEXP的一般用法如下
SELECT id, name FROM tblName WHERE name REGEXP 'tech'
有关REGEXP的更多信息,请参阅http://www.tutorialspoint.com/mysql/mysql-regexps.htm
答案 1 :(得分:0)
对于需要匹配字符串开头的简单情况,您可以使用
select * from table where field LIKE 'Hello %'
%符号是通配符。
但是对于你需要的例子,我会重新考虑你在mysql上放置的一些全文索引解决方案。
在MS SQL中,我们使用Levenstein Distance函数,您可以构建自己的函数并使用它扩展mysql。
以下是一些示例,但我不知道它是否可行
https://github.com/jmcejuela/Levenshtein-MySQL-UDF
https://github.com/jmcejuela/Levenshtein-MySQL-UDF/blob/master/levenshtein.c
找到一个应该是纯SQL的
http://openquery.com.au/blog/levenshtein-mysql-stored-function
答案 2 :(得分:0)
测试它可能会有所帮助
SELECT * FROM tblNAME WHERE Name LIKE "%name%";