#mysql
#mysql
Вопрос:
Мой текущий запрос (не работает)
SELECT url
FROM table
WHERE
'http://www.longurl.com/some/string' like '%' . url . '%'
таблица
url
longurl.com
Я пытаюсь сопоставить запись в «таблице» для longurl.com с любым сравниваемым URL, который содержит longurl.com .
Должны совпадать сравниваемые URL-адреса, такие как:
http://www.longurl.com/some/string
http://longurl.com
http://longurl.com/some/string
В этом примере PHP сравнивать очень просто:
$url = "http://www.longurl.com/some/string";
if(strstr($url, 'longurl.com')) {
echo "success";
} else {
echo "failure";
}
Комментарии:
1. Разве это не должно быть
LIKE
(в верхнем регистре)?2. можете ли вы сделать это без http? %//longurl.com /% Возможно, это: сбивает с толку анализатор.
3. вы пробовали ‘%longurl.com /%’
4. sql не чувствителен к регистру… некоторым людям просто легче читать, поэтому они так кодируют… Я лично ничего не пишу с заглавной буквы
5. Нет, как ‘% longurl.com % ‘ не возвращает совпадение
Ответ №1:
Хорошо, а как насчет:
SELECT url
FROM table
WHERE INSTR('http://www.longurl.com/some/string', url) > 0
(Форматирование не сработало так хорошо в комментариях, поэтому я добавил его снова в качестве ответа.)
Комментарии:
1. Это оружие выбора для поиска значения столбца где-нибудь в константе. Это также легче читать.
Ответ №2:
Если вам нужно получить все URL, содержащие longurl.com
затем попробуйте использовать:
SELECT url
FROM table
WHERE
url like '%longurl.com%'
Это должно сработать.
Ответ №3:
Попробуйте удалить или экранировать некоторые символы в вашей строке URL. ИЛИ опуская http: часть .. Я полагаю, что :
это может сбивать с толку анализатор…
so try %//longurl.com/%
или даже
%longurl.com% if possible
или даже
http://longurl.com/%
Комментарии:
1. Это не работает .. сопоставление longurl.com для %longurl.com/some/page % не соответствует. LIKE() здесь не является ответом.
Ответ №4:
это?
SELECT url
FROM table
WHERE
url like '%http://%longurl.com%'
или вы также можете использовать %longurl.com%
Комментарии:
1. используете ли вы параметры сортировки без учета регистра?
2. этот ответ не сработает, потому что средство сравнения для URL должно быть точно таким же, как в примерах, которые я предоставил для совпадений.. это динамическое значение из переменной PHP
Ответ №5:
Оператор конкатенации .
не существует в MySQL, вместо этого вы должны использовать функцию CONCAT():
SELECT url
FROM table
WHERE 'http://www.longurl.com/some/string' LIKE CONCAT('%', url, '%');
Ответ №6:
Как насчет этого:
SELECT url
FROM table
WHERE url LIKE '%longurl.com%string%'
или, чтобы быть похожим на ваш PHP:
SELECT url
FROM table
WHERE url LIKE '%longurl.com%'
Комментарии:
1. это не сработает, потому что longurl.com это не динамически вставляемый текст, часть «hxxp://www.longurl.com/some/string» является
Ответ №7:
Вы ищете:
LIKE '%longurl.com%'
Комментарии:
1. этот ответ не сработает, потому что средство сравнения для URL должно быть точно таким же, как в примерах, которые я предоставил для совпадений.. это динамическое значение из переменной PHP