Существует ли способ использовать КАК и ВО вместе?
Я хочу достигнуть чего-то вроде этого.
SELECT * FROM tablename WHERE column IN ('M510%', 'M615%', 'M515%', 'M612%');
Так в основном я хочу быть в состоянии соответствовать столбцу набору различных строк. Там другой путь состоит в том, чтобы сделать это с одним запросом, или я должен буду циклично выполниться по массиву строк, который я ищу?
Вы можете сделать это в одном запросе, объединив отдельные LIKE с OR:
SELECT * FROM tablename
WHERE column LIKE 'M510%'
OR column LIKE 'M615%'
OR column LIKE 'M515%'
OR column LIKE 'M612%';
Просто имейте в виду, что такие вещи, как LIKE и построчные функции, не всегда так хорошо масштабируются. Если ваша таблица, вероятно, вырастет, вы можете рассмотреть возможность добавления еще одного столбца в свою таблицу для независимого хранения первых четырех символов поля.
Это дублирует данные, но вы можете гарантировать их согласованность, используя триггеры вставки и обновления. Затем поместите индекс в этот новый столбец, и ваши запросы будут выглядеть так:
SELECT * FROM tablename WHERE newcolumn IN ('M510','M615','M515','M612');
Это перемещает стоимость расчета в точку, где это необходимо (при изменении данных), не каждый раз, когда вы ее читаете. . Фактически, вы можете пойти еще дальше и использовать новый столбец как логическое значение, указывающее, что это один из четырех специальных типов (если эта группа специальных параметров будет редко меняться). Тогда запрос будет еще быстрее:
SELECT * FROM tablename WHERE is_special = 1;
Этот компромисс между требованиями к памяти и скоростью - полезный трюк для больших баз данных - как правило, дисковое пространство дешево, процессорное ворчание ценно, а данные читаются гораздо чаще, чем записываются. Перенося расчет стоимости на этап записи, вы амортизируете стоимость всех операций чтения.
Используйте более длинную версию IN, которая представляет собой группу ИЛИ.
SELECT * FROM tablename
WHERE column LIKE 'M510%'
OR column LIKE 'M615%'
OR column LIKE 'M515%'
OR column LIKE 'M612%';
-121--1153266- Я не уверен, что TPL достаточен в вашем случае использования. Из моего понимания, основным вариантом использования TPL является разделение одной огромной задачи на несколько небольших задач, которые могут выполняться бок о бок. Например, если у вас большой список и вы хотите применить одно и то же преобразование к каждому элементу. В этом случае можно выполнить несколько задач, применяющих преобразование к подмножеству списка.
Случай, который вы описываете, кажется, не вписывается в эту картину для меня. В вашем случае у вас нет нескольких задач, которые делают одно и то же параллельно. У вас есть несколько различных задач, каждая из которых - это собственная работа (производители) и одна задача, которая потребляет. Возможно, TPL может использоваться для потребительской части, если вы хотите иметь несколько потребителей, потому что в этом случае каждый потребитель выполняет одну и ту же работу (предполагая, что вы найдете логику для обеспечения временной непротиворечивости, которую вы ищете).
Ну, это, конечно, просто мой личный взгляд на тему
Жить долго и процветать
-121--2343265-Как использовать подстроку с IN.
select * from tablename where substring(column,1,4) IN ('M510','M615','M515','M612')
Используйте более длинную версию IN, которая представляет собой связку OR.
SELECT * FROM tablename
WHERE column LIKE 'M510%'
OR column LIKE 'M615%'
OR column LIKE 'M515%'
OR column LIKE 'M612%';
Вам нужно будет использовать несколько терминов LIKE
, соединенных ИЛИ
.