Каков наилучший способ поиска подстановочных знаков в sql server 2005?

Итак, у меня есть stored procedure, который принимает такой код продукта, как 1234567890. Я хочу упростить поиск по подстановочным знакам для этих продуктов. (например, 123456*), и он должен вернуть все совпадающие продукты. Как лучше всего это сделать?

Раньше я использовал что-то вроде ниже:

SELECT @product_code = REPLACE(@product_code, '*', '%')

а затем выполните поиск LIKE в поле product_code, но я чувствую, что его можно улучшить.

Я не могу придумать лучшего способа. Есть ли проблема в том, чтобы сделать это таким образом?

Kevin 26.11.2008 18:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
1
1 203
2

Ответы 2

То, что вы делаете, - это лучшее, что вы можете сделать.

Одна из оптимизаций, которую вы можете попробовать, - обеспечить наличие индекса для столбцов, для которых вы разрешаете это. SQL Server по-прежнему потребуется выполнить полное сканирование для поиска по шаблону, но оно будет выполняться только по определенному индексу, а не по всей таблице.

Как всегда, отличной идеей является проверка плана запроса до и после любых изменений.

Пара случайных идей

Это зависит от обстоятельств, но вы можете подумать:

  • Всегда ищите подстроку по умолчанию. например если пользователь вводит «1234», вы ищите:

    ГДЕ продукт как "% 1234%"

  • Разрешить пользователям полный контроль. т.е. просто возьмите их ввод и передайте в предложение LIKE. Это означает, что они могут придумывать свои собственные поисковые запросы. Это будет полезно только в том случае, если ваши пользователи заинтересованы в обучении.

    ГДЕ продукт как @input

Другие вопросы по теме