Итак, у меня есть stored procedure, который принимает такой код продукта, как 1234567890. Я хочу упростить поиск по подстановочным знакам для этих продуктов. (например, 123456*), и он должен вернуть все совпадающие продукты. Как лучше всего это сделать?
Раньше я использовал что-то вроде ниже:
SELECT @product_code = REPLACE(@product_code, '*', '%')
а затем выполните поиск LIKE в поле product_code, но я чувствую, что его можно улучшить.


То, что вы делаете, - это лучшее, что вы можете сделать.
Одна из оптимизаций, которую вы можете попробовать, - обеспечить наличие индекса для столбцов, для которых вы разрешаете это. SQL Server по-прежнему потребуется выполнить полное сканирование для поиска по шаблону, но оно будет выполняться только по определенному индексу, а не по всей таблице.
Как всегда, отличной идеей является проверка плана запроса до и после любых изменений.
Это зависит от обстоятельств, но вы можете подумать:
Всегда ищите подстроку по умолчанию. например если пользователь вводит «1234», вы ищите:
ГДЕ продукт как "% 1234%"
Разрешить пользователям полный контроль. т.е. просто возьмите их ввод и передайте в предложение LIKE. Это означает, что они могут придумывать свои собственные поисковые запросы. Это будет полезно только в том случае, если ваши пользователи заинтересованы в обучении.
ГДЕ продукт как @input
Я не могу придумать лучшего способа. Есть ли проблема в том, чтобы сделать это таким образом?