Intereting Posts
Как вставлены две строки? Могу ли я использовать базу данных MySQL с приложением App Engine Как использовать CriteriaQuery SUM для пользовательской операции в некоторых ячейках? Получить 2 последних сообщения по каждой категории Доступ к SQL – задание двух дат, возврат дат предыдущего периода Как добавить функциональность для ComboBox <Выбрать все> в форматах Microsoft Access Прокрутите таблицу, используя Cross apply, и UNION ВСЕ результаты SQLite3 не поддерживает ограничения внешнего ключа? Получите разницу между другим полем между первой и последней отметками группировки Oracle SQL Query для получения определенного события с использованием определенного условия в xpath? В какой момент стоит использовать базу данных? Mysql COUNT (*) на нескольких таблицах DataReader, связанный с этой Командой, который должен быть закрыт первым Извлеките всех детей и их детей, рекурсивный SQL Эффективный запрос только для первых N строк для каждого уникального идентификатора

SQL – запрос, чтобы узнать, содержит ли строка значение в столбце

Я пытаюсь написать запрос, чтобы узнать, содержит ли строка часть значения в столбце (не путать с запросом, чтобы узнать, содержит ли столбец часть строки). Скажем, например, у меня есть столбец в таблице со значениями ABC, XYZ. Если я дам строку поиска ABCDEFG, тогда я хочу, чтобы строка с ABC отображалась. Если моя строка поиска – XYZDSDS, тогда должна отображаться строка со значением XYZ

    Ответ будет «использовать LIKE».

    См. Документацию: https://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html.

    Вы можете сделать WHERE 'string' LIKE CONCAT(column , '%')

    Таким образом, запрос становится:

     select * from t1 where 'ABCDEFG' LIKE CONCAT(column1,'%'); 

    Если вам нужно соответствовать в любом месте строки:

     select * from t1 where 'ABCDEFG' LIKE CONCAT('%',column1,'%'); 

    Здесь вы можете увидеть, как он работает в скрипке: http://sqlfiddle.com/#!9/d1596/4

    Выберите * из таблицы, где @param, как '%' + col '%'

    Во-первых, вы, кажется, сохраняете списки вещей в столбце. Это неправильный подход к хранению значений в базе данных. У вас должна быть таблица соединений с одной строкой на сущность и значение, т. Е. Отдельная строка для ABC и XYZ в вашем примере. SQL имеет отличную структуру данных для хранения списков. Он называется «таблица», а не «строка».

    Если вы застряли в таком формате и используете MySQL, есть функция, которая может помочь:

     where find_in_set('ABC', col) 

    MySQL обрабатывает строку с разделителями-запятыми как «набор» и предлагает эту функцию. Однако эта функция не может использовать индексы, поэтому она не особенно эффективна. Я упоминал, что вместо этого вы должны использовать таблицу соединений?