SQL NOT LIKE не работает должным образом

0

Я не могу понять, почему операторы NOT LIKE работают неправильно. У меня есть 34 sample_name в базе данных, которые начинаются с NT, но это только избавляет от некоторых, а не от других. Когда я пытаюсь выполнить поиск с помощью LIKE ('NT%), он ищет их все. Ниже приводится то, что у меня есть.

WHERE
    full.full_id IN ('272', '273')
OR  full.full_id IN ('567', '686')
AND random.sample_name NOT LIKE ('NT%')
  • 1
    Я думаю, что это не должно NOT LIKE 'NT%'
Теги:
navicat

2 ответа

2

У вас есть посторонний , в списке IN и вам не хватает ' в конце вашего оператора NOT LIKE. Заявление должно выглядеть следующим образом:

WHERE full.full_id IN ('272', '273', '567', '686')
AND random.sample_name NOT LIKE ('NT%')
  • 0
    Спасибо за исправление, однако, я опечатал раньше. Пожалуйста, проверьте правильный код сейчас. Это все еще не работает. Он удаляет только несколько записей, сохраняя при этом другие. Я догадываюсь, что оператор OR вызывает здесь некоторую проблему, потому что, если я full_id этот оператор и помещаю все full_id в один оператор, он работает. Любое понимание того, почему это происходит?
  • 0
    Если он работает с удалением оператора OR, то почему бы вам просто не удалить его, взяв весь список в один? У вас есть какое-то специальное назначение?
Показать ещё 1 комментарий
0

У вас есть несколько ошибок в коде, который вы опубликовали. Я собираюсь предположить, что вы намерены:

WHERE full.full_id IN (272, 273) AND
      random.sample_name NOT LIKE 'NT%'

Заметки:

  • Нет запятой в списке IN.
  • Завершение одиночной кавычки по шаблону LIKE
  • Не используйте одиночные кавычки для констант, если столбец является числом (используйте одинарные кавычки только для констант строки и даты).
  • Никаких скобок не требуется вокруг шаблона LIKE (хотя это не проблема синтаксиса)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню