Почему мой фильтр 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 обрабатывать все данные как строки.

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