2014-09-30 5 views
0

У меня есть таблица говорят tblName, поля и значенияпоиск Аванс столбца базы данных

| ID |  Name     | 

| 1 |  Technical University | 

| 2 |  XYZ Lab Ltd.   | 

Теперь я должен соответствовать имени столбца со следующими значениями входных:

1- tech univ 
2- tech universities 
3- xyz Labs 

Я не способный написать запрос для получения результата из таблицы. Если я сопоставляю колонку с номером tech univ или технических университетов, тогда запрос должен отвечать на результат набора результатов Технический университет из tblName.

Просьба предложить.

Спасибо в продвижении.

+2

Извините, я действительно не могу понять, что вам нужно. – Leo

+0

У меня есть вход «tech univ». Я хочу сопоставить это входное значение с столбцом «Имя» в таблице и хочу, чтобы набор записей имел идентификатор 1; –

ответ

1

Ну вы можете сделать одно имя карты с различными названиями, такие как

ID I_ID NAME 
1  1  tech university 
2  1  tech uni 
3  1  tech univs 

Так эта таблица будет ссылка для поиска запросов I_ID является внешним ключом, который ссылается ID в первичной таблице. Я думаю, это может решить вашу проблему, и вы можете определить несколько имен для одного имени.

Кроме того использовать регулярные выражения для большей эффективности, и вы должны разработать пользовательскую функцию для этого, хотя Genral использования REGEXP выглядит следующим образом

SELECT id, name FROM tblName WHERE name REGEXP 'tech' 

Пожалуйста, обратитесь http://www.tutorialspoint.com/mysql/mysql-regexps.htm больше на REGEXP

+0

@Pankaj Kumar: Было ли это полезно? –

+0

Хорошая идея, и это будет полезно, но эта концепция будет увеличивать накладные расходы для отображения данных. Я не хочу управлять сопоставлением. Есть ли какой-либо алгоритм, так что результат может возникнуть? –

+0

Да, но прямой SQL-запрос не сможет помочь. Вы можете попробовать REGEXP, http://www.tutorialspoint.com/mysql/mysql-regexps.htm, но даже это не сможет полностью решить все ваши проблемы. Либо вы должны сопоставить данные или использовать какой-либо интеллектуальный алгоритм для поиска совпадающих слов. –

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

0

тест этого может помочь

SELECT * FROM tblNAME WHERE Name LIKE "%name%"; 
Смежные вопросы