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

Метод ilike класса ColumnElement

Метод ilike класса ColumnElement создает SQL-выражение для регистронезависимого поиска строк по шаблону. Первым параметром метод принимает шаблон поиска в виде строки. Вторым необязательным параметром можно передать символ экранирования escape. Метод возвращает объект BinaryExpression, который можно использовать в условиях where и filter.

Синтаксис

ColumnElement.ilike(other, escape=None)

Пример

Давайте создадим таблицу 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), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'Article One', 'text': 'text 1', 'status': 'draft', 'num': 1}, {'title': 'article two', 'text': 'text 2', 'status': 'published', 'num': 2}, {'title': 'ARTICLE THREE', 'text': 'text 3', 'status': 'draft', 'num': 3} ]) stmt = select(articles.c.title).where(articles.c.title.ilike('article%')) res = conn.execute(stmt).fetchall() print(res)

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

[('Article One',), ('article two',), ('ARTICLE THREE',)]

Пример

Давайте выполним регистронезависимый поиск с подстановочным знаком _ для одного символа:

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), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'text': 'text 1', 'status': 'draft', 'num': 1}, {'title': 'article 2', 'text': 'text 2', 'status': 'published', 'num': 2}, {'title': 'article 10', 'text': 'text 3', 'status': 'draft', 'num': 3} ]) stmt = select(articles.c.title).where(articles.c.title.ilike('article _')) res = conn.execute(stmt).fetchall() print(res)

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

[('article 1',), ('article 2',)]

Пример

Давайте выполним регистронезависимый поиск по полю text с использованием условия OR:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, or_ engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'text': 'Hello World', 'status': 'draft', 'num': 1}, {'title': 'article 2', 'text': 'hello sqlalchemy', 'status': 'published', 'num': 2}, {'title': 'article 3', 'text': 'HELLO PYTHON', 'status': 'draft', 'num': 3} ]) stmt = select(articles.c.title).where( or_( articles.c.text.ilike('hello%'), articles.c.text.ilike('%world') ) ) res = conn.execute(stmt).fetchall() print(res)

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

[('article 1',), ('article 2',), ('article 3',)]

Пример

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

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), Column('text', String), Column('status', String), Column('num', Integer) ) stmt = select(articles.c.title).where(articles.c.title.ilike('article%')) print(stmt)

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

SELECT articles.title FROM articles WHERE articles.title ILIKE 'article%'

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

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