Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Столкнулся с проблемой нахождения конкретного слова, кто знает помогите / 6 сообщений из 6, страница 1 из 1
28.09.2020, 13:52
    #40003397
jakobakoba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
как найти строки с наличием конкретного слова в столбце? Например есть слово "IN", я хочу найти именно "IN" и не включать в результат такие слова как "INNER".
Т.е. Есть строка "pervoе predlojenie IN" это включаю, строку "vtoroe predlojenie INNER" не включаю.

НАПРИМЕР:
SELECT keyword_name, step_name
FROM keyword, step
WHERE INSTR(step_name, keyword_name) > 0

здесь keyword_name - это слова которые я ищу в step_name
В данном примере забирает все: и IN и INNER.

Вот как тут решить?
...
Рейтинг: 0 / 0
28.09.2020, 14:09
    #40003405
peter64
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
jakobakoba,
like '% IN %'?.
Нет , поспешил.
...
Рейтинг: 0 / 0
28.09.2020, 14:36
    #40003428
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
как вариант
Код: sql
1.
WHERE step_name REGEXP "[[:<:]]IN[[:>:]]"
...
Рейтинг: 0 / 0
28.09.2020, 16:06
    #40003503
jakobakoba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
Alex_Ustinov, Выдало ошибку, прочитал, что в mysql 8.0. нужно написать REGEXP "\\bслово\\b". Спасибо, получилось находить слова, написанные между кавычками. А как можно из списка выбрать? Вот например столбец keyword_name есть со словами, которые я хочу найти в другом стоблце, но я же не могу их каждый раз записывать вручную между кавычками? как можно это обойти?
...
Рейтинг: 0 / 0
28.09.2020, 16:54
    #40003546
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
jakobakoba
А как можно из списка выбрать?
распарсить список на токены, искать каждый отдельно.
...
Рейтинг: 0 / 0
28.09.2020, 21:46
    #40003687
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Столкнулся с проблемой нахождения конкретного слова, кто знает помогите
jakobakoba
как найти строки с наличием конкретного слова в столбце? Например есть слово "IN", я хочу найти именно "IN" и не включать в результат такие слова как "INNER".
Т.е. Есть строка "pervoе predlojenie IN" это включаю, строку "vtoroe predlojenie INNER" не включаю.

НАПРИМЕР:
SELECT keyword_name, step_name
FROM keyword, step
WHERE INSTR(step_name, keyword_name) > 0

здесь keyword_name - это слова которые я ищу в step_name
В данном примере забирает все: и IN и INNER.

Вот как тут решить?


Вы не полностью определили задачу, какие разделители допустимы, какие нет.
Отвечу в общем случае:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT keyword_name, step_name
FROM keyword, step
WHERE 
 ((INSTR(step_name, keyword_name) = 1) or -- в начале строки
  (INSTR(step_name, keyword_name) > 1) and (SUBSTR(step_name, INSTR(step_name, keyword_name)-1,1) in (DELIMS_BEFORE))) 
and
 ((INSTR(step_name, keyword_name) =Length(step_name) -Length(keyword_name) +1) or  -- в конце строки
  ....



т.е. найти подстроку, по индексу посмотреть символ до/после подстроки. Код выглядит ужасно, но оптимизатор должен убрать повторные вызовы INSTR.

С regex можно более элегантно, но я не берусь написать regex для mssql который учтет все возможные разделители, а не только пробелы и пунктуацию.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Столкнулся с проблемой нахождения конкретного слова, кто знает помогите / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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