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

Функция func.length

Функция func.length возвращает длину строки. В качестве параметра функция принимает колонку или любое другое выражение SQLAlchemy, которое возвращает строку. Функция транслируется в SQL-функцию length и возвращает целое число.

Синтаксис

func.length(expression)

Пример

Давайте посчитаем длину строки в простом SQL-запросе без таблицы:

from sqlalchemy import create_engine, func, select engine = create_engine('sqlite:///:memory:') stmt = select(func.length('article')) with engine.connect() as conn: res = conn.execute(stmt).scalar() print(res)

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

7

Пример

Давайте создадим таблицу articles и посчитаем длину заголовка каждой статьи:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import func, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article', 'text': 'sql'}, {'id': 2, 'title': 'user', 'text': 'python'}, ]) stmt = select(articles.c.title, func.length(articles.c.title)) res = conn.execute(stmt).all() print(res)

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

[('article', 7), ('user', 4)]

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import func, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article', 'text': 'sql'}, {'id': 2, 'title': 'user', 'text': 'python'}, ]) stmt = select(articles.c.title).where(func.length(articles.c.title) > 5) res = conn.execute(stmt).scalars().all() print(res)

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

['article']

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

SELECT articles.title FROM articles WHERE length(articles.title) > 5

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import func, select, desc engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article', 'text': 'sql'}, {'id': 2, 'title': 'user', 'text': 'python'}, ]) stmt = select(articles.c.title).order_by(desc(func.length(articles.c.title))) res = conn.execute(stmt).scalars().all() print(res)

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

['article', 'user']

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

  • функцию func,
    которая создает произвольную SQL-функцию
  • функцию func.lower,
    которая переводит строку в нижний регистр
  • функцию func.upper,
    которая переводит строку в верхний регистр
  • функцию func.concat,
    которая объединяет строки в одну
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить