То, как я могу выбрать строки, которые являются пустым использованием, связало запросы в DBI Perl?

Вам нужно и регулярное выражение, и строку для проверки, например:

var regEx = new Regex(@"(-?\d +)x\^ 2([+-]\d +)x([+-]\d +)");

var match = regEx.Match("string to test");

или, если вы не планируете использовать его более одного раза, вы можете использовать статический метод, подобный этому: [ 114]

var match = Regex.Match("string to test", @"(-?\d +)x\^ 2([+-]\d +)x([+-]\d +)");

Если вам нужна коллекция совпадений, а не только первая, вы можете получить их так:

var matchCollection = regEx.Matches("string to test");
6
задан RobEarl 1 August 2013 в 13:17
поделиться

3 ответа

Да; связанный прием - то, если у Вас есть X потенциальных фильтров, некоторые из них дополнительный, должен иметь шаблон, говорят " AND ( ?=-1 OR some_field = ? ) ", и создайте специальную функцию, которая переносит выполнить вызов и связывает всю секунду? s. (в этом случае,-1 специальное значение, означающее, 'игнорируют этот фильтр').

Обновление от Paul Tomblin: Я отредактировал ответ для включения предложения из комментариев.

4
ответ дан 17 December 2019 в 00:15
поделиться

Я думаю, что это - разумный подход. Это следует за нормальным шаблоном фильтра приятно и должно дать хорошую производительность.

1
ответ дан 17 December 2019 в 00:15
поделиться

Таким образом, Вы полагаетесь на замыкание накоротко семантики булевых выражений для вызова Вашего IS NULL состояние? Это, кажется, работает.

Один интересный момент то, что константное выражение как 1 = 0 это не имело параметров, должен быть факторизован оптимизатором запросов. В этом случае, так как оптимизатор не знает, является ли выражение константой true или false до выполняют время, которое означает, что не может факторизовать его. Это должно оценить выражение для каждой строки.

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

Затем объединение с OR с IS NULL выражение может также иметь последствия для оптимизатора. Это могло бы решить, что не может извлечь выгоду из индекса на deleted_on, тогда как в более простом выражении это имело бы. Это зависит от реализации RDBMS, которую Вы используете, и распределение значений в Вашей базе данных.

2
ответ дан 17 December 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: