SQL использует больше / меньше, чем с подобными и подстановочными знаками
В настоящее время я немного озадачен тем, как реализовать определенную вещь. По сути, у меня есть встроенная база данных (которая действительно ненавидит JOINs с точки зрения производительности) и требование добавления механизма подстановки в поле поиска. В настоящее время поле поиска позволяет пользователю вводить дату и некоторые суммы / доходы, которые сопоставляются с использованием чего-то вроде: SELECT * FROM table where date >= '{0}' AND date <= '{1}'
РЕДАКТИРОВАТЬ: Это связано с тем, что адаптер.NET генерирует SQL во время выполнения с возможными различными комбинациями AND-предложений. Может быть, пользователь вводит только значение для {0}, может быть, он вводит только одно для {1}, может быть, он вводит оба, может быть, он не вводит ничего. Поэтому между тем, к сожалению, не получилось бы, если бы я не начал серьезное регулярное выражение.
Я хотел бы использовать ключевое слово LIKE для реализации что-то вроде:
SELECT * FROM table where date >= LIKE '{0}' AND date <= LIKE '{1}'
с {0}
быть чем-то вроде "2015.01*"
Я признаю, что Дата может быть немного больше, но возможно ли использование таких вещей, как суммы или доходы? Если так, какой правильный синтаксис? Google не мой друг на этом...
Спасибо за всю вашу помощь заранее!
1 ответ
LIKE
выполняет сопоставление с регулярным выражением, например, LIKE '%a'
соответствует "1а", но также "2а". Из этого совершенно ясно, что >= LIKE '...'
это невозможно.
Что вы могли бы сделать, это построить строку из даты, чтобы у вас был, например, "ГГГГММДД", то вы можете легко сравнить с LIKE 'YYYYMM%'
или с >= 'YYYYMM'
,
Тем не менее я не понимаю, почему вы не просто используете SELECT * FROM table where date >= '{0}' AND date <= '{1}'
(или вариант этого запроса, используя between
), что вы уже предложили.