powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Что такое LIKE CONCAT и почему такой результат ?
9 сообщений из 9, страница 1 из 1
Что такое LIKE CONCAT и почему такой результат ?
    #39890648
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код на PHP в котором формируется вот такой запрос:

SELECT * FROM mapping WHERE 'IML, ул. Гагарина, 28, ТЦ Лотос-М, модуль 27, 1-2 р. дн.' LIKE CONCAT('%', shipping_type_desc, '%')

Честно говоря смысл конструкции от меня ускользает, но в итоге в ответе получаем из базы две записи со следующими значениями в поле shipping_type_desc :

IML, ул. Гагарина, 2
IML, ул. Гагарина, 28, ТЦ Лотос-М, модуль 27

Проблема в том, что по смыслу алгоритма, нам нужна только вторая из них, а первая не нужна.

Кто нибудь понимает как это работает и что надо переделать, чтобы только вторая запись отбиралась ?
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890652
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anstrem
по смыслу алгоритма

может Вы просто нам Ваш "смысл" объясните

а то в понедельник, хрустальный шар еще не успел настроиться должным образом на отгадывание, что же в результате нужно
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890662
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,


Не знаю смысла, не мой код, но он прекрасно работал много лет без проблем, ровным образом до тех пор пока у двух пунктов не совпало в точности начало строки по которой идет сравнение и в итог попадает не тот что нужно...

Я не понимаю что вообще делает оператор LIKE CONCAT и каким образом по указанной строке находится то что находится с этим оператором ? Оно ищет все строки в которых есть совпадения с чем ? с любой частью искомой или как ?
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890672
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890689
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow,

Яснее не стало... эту статью я уже видел.
В примерах написано что производится конкатенация аргументов

Т.е. получается что в запросе LIKE CONCAT('%', shipping_type_desc, '%') в итоге получаем просто LIKE %shipping_type_desc%


Попробовал, выкинул CONCAT со скобками, оставил просто LIKE %shipping_type_desc% - НЕ РАБОТАЕТ
В чем магия CONCAT ?
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890705
anstrem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, сорян, что мучил этим гавном, что там хотел изобразить автор я так и не понял.
Выкинул нахрен этот запрос, переписал по другому с обычным LIKE
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890728
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оператор LIKE работает самостоятельно, использует аргумент, следующий за ним.
Функция CONCAT() тоже самостоятельно работает, использует аргументы в скобках и возвращает некоторое значение.
Таким образом, LIKE использует в качестве аргумента значение, возвращаемое функцией CONCAT().
Это к вопросу о "Что такое".

anstrem
выкинул CONCAT со скобками, оставил просто LIKE %shipping_type_desc% - НЕ РАБОТАЕТ
Вы написали какую-то непонятную абракадабру, потому и не работает.

anstrem
В чем магия CONCAT ?
Функция возвращает строковое значение.
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890735
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нечеткий поиск, он такой себе..... нечеткий

Судя по всему, ТЗ было построено исходя из того. что нужно вернуть "первое попавшиеся" ( TM ) значение, хоть как-то похожее на заданную строчку. Разумеется, в какой-то момент, "первое попавшиеся не попало" ( TM ).

Подозреваю, автору нужно из всех "первых попавшихся" найти наиболее "попавшиеся" и, подозреваю, сортировка по длине результирующей строки его вполне на ближайшие пару месяцев (или год, в общем, сколько там осталось до увольнения или выведения системы из эксплуатации времени) - вполне спасет.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Что такое LIKE CONCAT и почему такой результат ?
    #39890821
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anstrem
Т.е. получается что в запросе LIKE CONCAT('%', shipping_type_desc, '%') в итоге получаем просто LIKE %shipping_type_desc%
Нет, получается содержимое поля shipping_type_desc с присоединенными знаками процента в начале и в конце.
А ваше LIKE %shipping_type_desc% - это даже не по синтаксису.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Что такое LIKE CONCAT и почему такой результат ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]