Регулярное выражение (регулярное выражение) для поиска определенного слова в любой части строки, но с ограничением символов

#sql #tsql #sql-like

Вопрос:

Я хочу использовать регулярное выражение в функции SQLs «НРАВИТСЯ», чтобы иметь возможность искать строки, содержащие определенное слово.

Например, допустим, у меня есть список имен папок (с ноутбука), и я хочу выполнить поиск по всем папкам, содержащим слово «Старый». Пример результатов, которые я хочу:

Имя папки
Старые Шаблоны
старые Архивы
временная — старая

Однако, когда я использую:

 WHERE folder LIKE '%Old%'  

Очевидно, что я получаю следующие результаты:

Имя папки
Старые Шаблоны
старые Архивы
временная — старая
Хар, старина Дженкинс
Джерри Олд Филд

Я просто хочу использовать регулярное выражение, которое ищет слово «Старый» на любом этапе строки, но оно ищет только 3 символа и извлекает полную строку.

Просто интересно, может ли кто — нибудь мне помочь- спасибо!

Комментарии:

1. Я не понимаю вопроса. Можете ли вы показать желаемый результат?

2. Кстати, LIKE это не регулярные выражения. Регулярные выражения сопоставляются с REGEX или RLIKE .

3. Вы спрашиваете, как сопоставлять только целые слова, а не части слов, чтобы они не совпадали harold ?

4. @Barmar Спасибо за ваш ответ. Ах, хорошо, мне сказали, что вы можете включить регулярное выражение в оператор LIKE, например, если вы открываете с помощью ‘[a-z]’. В принципе, таблица вверху-это мои желаемые результаты, но я получаю результаты из нижней таблицы. Я хочу найти слово «старый», но не хочу, чтобы оно возвращало «старый», например, в «Гарольде».

5. @Бармар Да, это то, что я пытаюсь сказать, но я не очень хорошо это сделал, ха-ха

Ответ №1:

Как правило, like оператор имеет ограниченную функциональность, безусловно, меньшую, чем регулярное выражение. Однако то, что вам нужно, можно сделать с помощью

  1. Добавление пробела в начало и конец строки поиска, чтобы убедиться, что это другое слово
  2. Проделайте то же самое с целевой строкой, чтобы она также совпадала по краям:

where ' ' folder ' ' like '% old %'

Комментарии:

1. В конце концов, вы можете использовать классы отрицаемых символов вместо пробелов в шаблоне в качестве полизаполнения для границ слов регулярных выражений: like '%[^a-zA-Z]old[^a-zA-Z]%' . (или [^a-zA-Z0-9] )

2. @Barmar: вопрос помечен tsql.

3. Ой, извини, я этого не заметил. Я обычно слежу за mysql.

4. @Бармар: Это не имеет значения, но чтобы заставить тебя простить, взгляни на мой последний ответ.

5. Отлично, спасибо вам!