2013-04-11 4 views
3

Учитывая текст:получить точное соответствие с LIKE - SQL/PHP

"Hello, I'm from Hell", 
"Hello, I'm from Ell" 

и следующее предложение SQL:

SELECT * FROM table WHERE text LIKE '%ell%' 

я получаю как вышеуказанные тексты, но я не хочу получить оба текста, потому что я искал текст «Элл», а не «Ад»

Если кто-то знает, что я имею в виду, вы можете мне помочь?

Заранее благодарен!

EDIT:

ЛУЧШИЙ ПРИМЕР

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

+0

Возможно, вам придется использовать регулярное выражение – Oussama

+0

Вы имеете в виду, что хотите выполнить свой подобный оператор с учетом регистра? –

+0

Nope не чувствительный к регистру. Я хочу найти отдельное слово «ell». Я не хочу получать ад, потому что ell - часть ада, если вы знаете, что я имею в виду. – Mossawi

ответ

9

Вы можете использовать граничное слово соответствие MySQL Regex:

SELECT * FROM table WHERE text REGEXP '[[:<:]]ell[[:>:]]' 

Это соответствует строке, которая cosntains слово ell с границей слова на любая сторона.

+0

СПАСИБО! Это то, что мне нужно! – Mossawi

+0

@Mossawi Добро пожаловать :) – Paulpro

+0

Вы проверили регулярное выражение с текстом с несколькими строками, такими как '123 hell hellhell'? Если формат поля «текст» в многострочном тексте и использовать приведенный выше оператор, он все равно показывает результат, пока он не должен –

1

Вы также можете найти место?

SELECT * 
FROM table 
WHERE text LIKE '% ell%' 
OR text LIKE 'ell%' // needed if string starts with ell 
1

Вы можете попробовать это:

SELECT * FROM table WHERE text LIKE BINARY '%ell%' 
0

Выберите точно не соответствует ни одного случая чувствительную

SELECT * FROM таблицы где НИЖНИЙ (колонка), как BINARY LOWER ('Ell')

Это работает, если текст имеет многострочный.

Смежные вопросы