Когда у меня возникают подобные проблемы, неизменно оказывается, что строки сравнения просто не совпадают.(Это не значит, что они не выглядят так, как будто они соответствуют .) Распространенными причинами являются орфографические ошибки, проблемы в верхнем и нижнем регистре, символы (особенно пробелы) не такие, какими они кажутся.У вас есть пробелы в любом из ваших «похожих» сравнений?
Как вы получили данные в базу данных?Вы скопировали его из Word или Excel и вставили в конструктор SQL-запросов, или что-то в этом роде?Это может вызвать проблемы, если вы не будете осторожны.
И, конечно, вы знаете, что ВСЕ ваши «подобные» сравнения должны совпадать, чтобы получить данные ...?
Вот пример того, что может происходить:
Если в поле «Необходимые предметы» = «Летучая мышь, Шар, Перчатка, Шапка, Шлем, Водная битва», оба эти параметра завершатся неудачно:
...where Required_Items like '%Bat%'
and ...'%Water Bottle%'
...where Required_Items like '%Glove%'
and ...'%Water Bottle%'
(поскольку в базе данных неправильно написано «Бутылка с водой»)
Вы можете устранить эту проблему, если в предложении where будет по одному элементу за раз, пока не найдететот, который терпит неудачу.
Что касается переменного количества элементов, то при использовании данных в том виде, как вы их настроили (все элементы в одном поле csv), ваш код может быть наиболее чистым, если вы используете динамический sql.Вот где вы строите запрос в строку vaiable и выполняете переменную.Ищите «Динамический SQL».
При этом предпочтительным способом хранения данных такого типа в реляционной базе данных является создание поддерживаемых отношений между сущностями.Ваши данные были бы намного удобнее, если бы вы разбили элементы на такую структуру:
__The_Table_______ __Thing_Items____ __Items_______________
Thing_ID Thing Thing_ID Item_ID Item_ID Item
-------- -------- -------- ------- ------- --------------
T1 Baseball T1 i1 i1 Ball
T2 Football T1 i2 i2 Bat
T3 Fishing T1 i5 i3 Shoulder Pads
T2 i1 i4 Worms
T2 i3 i5 Water Bottle
T2 i5
T3 i4
T3 i5
Эта структура сделает обработку неизвестного количества элементов очень легкой.
Если выне можете решить, опубликуйте фактический код и фактические данные, если можете.
Скотт