РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
485 of 711 menu

Метод regexp_match

Метод regexp_match класса ColumnElement создает SQL-выражение для проверки соответствия значения столбца регулярному выражению. Первым параметром метод принимает строку с шаблоном регулярного выражения. Вторым необязательным параметром можно передать флаги сопоставления. Метод возвращает объект бинарного выражения, который можно использовать в условиях выборки.

Синтаксис

ColumnElement.regexp_match(pattern, [flags])

Пример

Давайте создадим таблицу articles и выполним выборку строк, где значение столбца title соответствует шаблону:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article one'}, {'id': 2, 'title': 'user two'}, {'id': 3, 'title': 'article three'}, ]) stmt = select(articles.c.id, articles.c.title).where( articles.c.title.regexp_match('^article') ) for row in conn.execute(stmt): print(row)

Результат выполнения кода:

(1, 'article one') (3, 'article three')

Пример

Давайте используем флаги сопоставления, например флаг i для регистронезависимого поиска:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'Article one'}, {'id': 2, 'title': 'user two'}, {'id': 3, 'title': 'ARTICLE three'}, ]) stmt = select(articles.c.id, articles.c.title).where( articles.c.title.regexp_match('^article', 'i') ) for row in conn.execute(stmt): print(row)

Результат выполнения кода:

(1, 'Article one') (3, 'ARTICLE three')

Пример

Давайте посмотрим на итоговый SQL-запрос, который генерирует метод regexp_match:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) stmt = select(articles.c.id).where( articles.c.title.regexp_match('^article') ) print(stmt)

Итоговый SQL запрос:

SELECT articles.id FROM articles WHERE articles.title REGEXP ?

Смотрите также

  • класс ColumnElement,
    который представляет базовый элемент столбца
  • метод regexp_replace,
    который заменяет подстроки по регулярному выражению
  • метод match,
    который выполняет полнотекстовый поиск
  • метод like,
    который ищет по шаблону с подстановочными знаками
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить