Ответ 1
Если вы используете поддержку Sqlite REGEXP (см. ответ на Проблема с regexp python и sqlite, как это сделать), то вы можете сделать это легко в одном пункте
SELECT word FROM table WHERE word NOT REGEXP '[abc]';
У меня есть запрос sqlite3 как:
SELECT word FROM table WHERE word NOT LIKE '%a%';
Это позволит выбрать все слова, в которых слово "а" не встречается. Это я могу получить на работу отлично. Проблема в том, что если я захочу еще больше ограничить результаты, чтобы они не включали слово "b" в слова. Я представляю что-то вроде этого.
SELECT word FROM table WHERE word NOT IN ('%a%', '%b%', '%z%');
что это, очевидно, не работает, но это идея. Я просто пытаюсь избежать добавления предложения AND
:
SELECT word FROM table WHERE word NOT LIKE '%a%' AND NOT LIKE '%b%';
Если это единственный вариант, мне придется с этим поработать, но я надеялся на что-то еще.
Если вы используете поддержку Sqlite REGEXP (см. ответ на Проблема с regexp python и sqlite, как это сделать), то вы можете сделать это легко в одном пункте
SELECT word FROM table WHERE word NOT REGEXP '[abc]';
SELECT word FROM table WHERE word NOT LIKE '%a%'
AND word NOT LIKE '%b%'
AND word NOT LIKE '%c%';
Вы пропустили второе утверждение: 1) НЕ НРАВИТСЯ A, И 2) НЕ НРАВИТСЯ B
SELECT word FROM table WHERE word NOT LIKE '%a%' AND word NOT LIKE '%b%'
Запрашиваемый запрос будет
SELECT word FROM table WHERE word NOT LIKE '%a%' AND word NOT LIKE '%b%'
Я не уверен, почему вы избегаете AND. Это простейшее решение.
В противном случае вам нужно будет выполнить INTERSECT несколько запросов:
SELECT word FROM table WHERE word NOT LIKE '%a%'
INTERSECT
SELECT word FROM table WHERE word NOT LIKE '%b%'
INTERSECT
SELECT word FROM table WHERE word NOT LIKE '%c%';
В качестве альтернативы вы можете использовать регулярное выражение, если ваша версия SQL поддерживает его.
это команда выбора
FROM
user
WHERE
application_key = 'dsfdsfdjsfdsf'
AND email NOT LIKE '%applozic.com'
AND email NOT LIKE '%gmail.com'
AND email NOT LIKE '%kommunicate.io';
эта команда обновления
UPDATE user
SET email = null
WHERE application_key='dsfdsfdjsfdsf' and email not like '%applozic.com'
and email not like '%gmail.com' and email not like '%kommunicate.io';
Если у вас возникли проблемы с запросом "не как", Учтите, что у вас может быть нуль в базе данных. В этом случае используйте:
IFNULL(word, '') NOT LIKE '%something%'