Почему мой фильтр LIKE соответствует только одному значению?
У меня есть этот файл Excel, который дает мне неожиданные результаты по запросу SQL с объединением на LIKE
критерии.
Вот оператор SQL:
SELECT CO.MATERIALS, CO.SIZES, CO.TOOLS, IR.PN, IR.BODYJAW
FROM `CROSSJOIN$` CO
LEFT JOIN `INSERTS$` IR
ON CO.TOOLS=IR.TOOL
AND ((IR.MATERIAL Like '%'+CO.MATERIALS+'%'))
AND ((IR.SIZE Like '%'+CO.SIZES+'%'))
И проблема в том, что критерии для IR.MATERIAL
будет соответствовать только одному значению "333". Я не могу понять это. Вот визуальное объяснение того, что происходит (если вы не хотите загружать файл):
Два других фильтра работают нормально, по отдельности или в комбинации, и все совпадения возвращаются, как и ожидалось. Это просто MATERIAL
поле, которое вызывает у меня изжогу. Если я удаляю два других фильтра из оператора SQL, я все равно получаю совпадения только для записей с материалом "333", и если я удаляю этот материал из левой таблицы, я не получаю совпадений вообще.
Кто-нибудь знает, что вызвало бы такое поведение? В качестве проверки работоспособности я попробовал vlookup в excel для этих таблиц, и он сопоставил материал без проблем, поэтому данные верны и действительно совпадают.
1 ответ
Интересно, что только 333
Матчи.
Я думаю, что происходит то, что первые значения, которые Excel видит в столбцах вашего материала, равны 333, поэтому он выводит, что тип столбца Integer
значение, которое будет ограничивать потенциальные совпадения с другими целочисленными значениями.
Вы можете проверить эту теорию, выдумывая другие коды материала - сделайте "444" или что-то в каждом листе и посмотрите, соответствует ли это. Если это так, убедитесь, что типы данных столбцов соответствуют вашим требованиям (я полагаю, весь текст).
В качестве альтернативы, добавив IMEX=1
к вашей строке подключения может быть проще - это заставит считыватель данных Excel обрабатывать все данные как строки.