НРАВИТСЯ для 2 полей в одной таблице - PullRequest
1 голос
/ 10 декабря 2010

Могу ли я узнать, как получить LIKE со слиянием более чем одного поля в MySQL?Например:

Я бы хотел сравнить строку поиска с полями A и B.

SELECT A, B из таблицы WHERE (оба AB) LIKE 'строка поиска'

Извините, ребята, может быть, мой вопрос не настолько подробен.Например: A - это «i», B - это «любовь»

Как получить возвращенную строку, будь то результат поиска «я люблю» или «люблю меня».

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 декабря 2010
SELECT A, B from example WHERE (A LIKE 'search_string' and B LIKE 'search_string');
0 голосов
/ 10 декабря 2010

Я изменил синтаксис вашего запроса, чтобы правильно проверить оба поля:

SELECT A, B from `table` WHERE A LIKE 'search string' AND B LIKE 'search string'

Но, возможно, вам понадобятся некоторые символы подстановки в предложении LIKE, иначе это буквальное совпадение, не отличающееся от =.

SELECT A, B from `table` WHERE A LIKE '%search string%' AND B LIKE '%search string%'

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

UPDATE:

Ваш вопрос сформулирован немного двусмысленно. Возможно, вы имели в виду объединить A и B вместе и сравнить их с search string. В этом случае вы можете попробовать что-то вроде следующего (только в MySQL):

SELECT A, B from `table` WHERE concat(A, B) LIKE '%search string%';

Но не ожидайте, что он будет работать хорошо из-за вызова функции и подстановочных знаков.

ОБНОВЛЕНИЕ № 2:

Я вижу по вашему комментарию, что вы действительно хотите это:

SELECT A, B from `table` WHERE 'search string' LIKE concat('%', A, '%')
    AND 'search string' LIKE concat('%', B, '%');
...