2013-09-05 3 views
0

У меня есть эта таблица:Как искать слова в столбце varchar?

materials table

Я хочу искать material_name по определенным способом:

, например: если у меня есть материал под названием (мой новый продукт 2014)

если (mnp 2), (med 0), (ywc 1), (my w uc), (my), (mn) ... (где первая часть помеченной строки относится к первому слову названия материала и второй для второго и т. д.) (когда пользовательское пространство для печати, функция должна начинаться смотреть на следующее слово) ... материал должен быть одним выбранных материалов и функция поиска, вызванная событием TextChange.

В моей ситуации, которая лучше, чтобы выполнить функцию поиска в приложении или в sql? и почему?

зная, что: таблица материалы могут содержать материалы 10000

вы можете мне помочь?

+1

Что означает _press (mnp 2), (med 0), (ywc 1), (my w uc), ..._? –

+0

Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. –

+0

@TimSchmelter первая часть строки относится к первому слову имени материала, а вторая для второго и т. Д. – Aroo

ответ

2

вы, вероятно, лучше всего создали бы и указатели, содержащие первую букву/число слов каждого материала, а затем поиск по этому вопросу.

Итак, у вас есть таблица, содержащая значения, которые будут вводить ваши пользователи (mnp2, med0, ywc1 и т. Д. И т. Д.), А затем material_id, которые вы можете использовать для поиска фактического имени материала, затем выберите материал с соответствующим именем из вашего список.

В качестве альтернативы (и, возможно, проще) просто создайте этот индекс в памяти на клиенте из списка при запуске, затем найдите индекс, для которого набраны ваши клиенты, и выберите соответствующий элемент в списке. Поэтому создать представление вашего списка с короткой версией вашего материала и позицией в списке:

mnp2,0 
med0,1 
ywc1,2 

и т.д. и т.п.

тогда совпадают с пользователями нажатий клавиш в этот список (с помощью StartsWith, вероятно, лучше всего) и выберите элементу из списка в соответствующем месте

+0

таким образом, индексная таблица my содержит более 1000000 строки для 10000 материалов Я думаю, что производительность будет плохой! – Aroo

+0

no индекс содержит 1 строку на материал, т.е. mnp2, med0 и т. Д. И т. Д. –

Смежные вопросы