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

Функция func.concat

Функция func.concat выполняет конкатенацию строк, то есть соединяет две или более строковых величины в одну результирующую строку. Функция принимает произвольное количество аргументов, которые могут быть как колонками таблицы, так и литеральными значениями. Порядок аргументов определяет порядок следования частей в итоговой строке.

Синтаксис

func.concat(expression, *args)

Пример

Давайте объединим две строковые константы с помощью функции func.concat и выведем результат:

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

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

"articleuser"

Пример

Давайте создадим таблицу articles и объединим значения колонок title и status через разделитель:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, func 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.begin() as conn: conn.execute(articles.insert(), [ {'title': 'article', 'text': 'text one', 'status': 'new', 'num': 1}, {'title': 'article', 'text': 'text two', 'status': 'old', 'num': 2} ]) stmt = select( func.concat(articles.c.title, '-', articles.c.status) ) with engine.connect() as conn: res = conn.execute(stmt).scalars().all() print(res)

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

['article-new', 'article-old']

Пример

Давайте применим функцию func.concat к нескольким колонкам таблицы и выведем итоговый SQL-запрос:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, func 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( func.concat(articles.c.title, ' ', articles.c.text, ' [', articles.c.status, ']') ) print(stmt)

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

SELECT concat(articles.title, ?, articles.text, ?, articles.status, ?) AS concat_1 FROM articles

Пример

Давайте объединим строку с числовым значением колонки num, приведенным к строке:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, func, cast 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.begin() as conn: conn.execute(articles.insert(), [ {'title': 'article', 'text': 'text one', 'status': 'new', 'num': 1}, {'title': 'article', 'text': 'text two', 'status': 'old', 'num': 2} ]) stmt = select( func.concat(articles.c.title, ' #', cast(articles.c.num, String)) ) with engine.connect() as conn: res = conn.execute(stmt).scalars().all() print(res)

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

['article #1', 'article #2']

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

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