SQL-запрос, в котором поле НЕ СОДЕРЖИТ $ x

Я хочу найти SQL-запрос для поиска строк, в которых field1 не содержит $ x. Как я могу это сделать?

Могу ли я использовать функцию CONTAINS () (sql) для такой же проверки?

Kate 14.06.2012 14:10
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
149
1
525 002
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

SELECT * FROM table WHERE field1 NOT LIKE '%$x%'; (убедитесь, что вы правильно экранировали $ x, чтобы избежать SQL-инъекции)

Обновлено: NOT IN делает что-то немного другое - ваш вопрос не совсем ясен, поэтому выберите, какой из них использовать. LIKE 'xxx%' может использовать index. LIKE '%xxx' или LIKE '%xxx%' не могут.

Что считается правильным побегом? Я знаю, что с обычными строками вам нужно избежать всего нескольких вещей, но LIKE имеет несколько дополнительных специальных символов.

Pieter Bos 16.05.2012 19:01
Ответ принят как подходящий

Что это за поле? Оператор IN нельзя использовать с одним полем, он предназначен для использования в подзапросах или с предопределенными списками:

-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);

Если вы ищете строку, используйте оператор LIKE (но это будет медленно):

-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';

Если вы ограничите его так, чтобы строка, которую вы ищете, должна начинаться с данной строки, она может использовать индексы (если в этом поле есть индекс) и работать достаточно быстро:

-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';

что такое x.b? ваши письма очень сбивают с толку. Я рекомендую использовать таблицу или поле.

Whitecat 25.08.2015 00:10

Убедитесь, что если вы используете подзапрос для NOT IN, ни одно из значений не будет NULL, как NOT IN и NULL не объединяются очевидным образом, если вы не знакомы с трехзначной логикой. Здесь вы должны использовать SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL);. Если вам также нужно исключить значения NULL, вам нужно будет сделать это: SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;

Bacon Bits 22.09.2017 20:52

Другие вопросы по теме