PostgreSQL Функция SUBSTRING() с примером регулярного выражения

⚡ Умное резюме

PostgreSQL ПОДСТРОКА extracФункция `ts` возвращает часть строки, используя необязательную начальную позицию и длину, а также сопоставляет текст с регулярным выражением POSIX для извлечения шаблонов, таких как числа или коды.

  • 📋 Синтаксис: Функция `substring( string [from start] [for length] )` возвращает часть исходной строки.
  • 1️⃣ Позиций: Позиции символов начинаются с 1, и, если не указывать длину, чтение происходит до конца строки.
  • 🔎 Регулярное выражение: SUBSTRING(string FROM pattern) extracЭто первый текст, соответствующий регулярному выражению POSIX.
  • 🧮 Grouping: Группа в скобках в шаблоне возвращает только ту часть совпадения, которая была захвачена.
  • 🖥️ pgAdmin: В редакторе запросов pgAdmin все запросы на поиск подстроки выполняются одинаково.
  • 🤖 Помощь в использовании ИИ: Искусственный интеллект-помощники генерируют и объясняют шаблоны регулярных выражений для точного определения подстрок.tracния.

PostgreSQL Функция SUBSTRING с использованием регулярных выражений

Что такое PostgreSQL Подстрока?

PostgreSQL Функция substring помогает вам...tracФункция возвращает часть строки. Вместо возврата всей строки, она возвращает только её часть, что полезно для сокращения кода и чтения полей фиксированной ширины.

Синтаксис

PostgreSQL Функция подстроки имеет следующий синтаксис:

substring( string [from starting_position] [for length] )

Параметры

Функция substring использует следующие параметры:

string Исходная строка с типом данных varchar, char, string и т. д.
Начальная позиция Необязательный параметр. Он обозначает место, где происходит экс.tracНачнётся ввод строки. Если этот параметр опустить, то...tracНачало строки — с позиции 1, которая является первым символом в строке.
Необязательный параметр. Он указывает количество символов, которые необходимо вывести.tracВыведено из строки. Если этот параметр опущен, функция будет работать.tracts от начальной позиции до конца строки.

Примеры

В этом примере мы хотим показатьtracпервые 4 символа слова Guru99:

SELECT substring('Guru99' for 4);

Команда вернет следующее:

PostgreSQL Substring

Мы не указали начальную позицию, поэтому бывшаяtracПодстрока начиналась с позиции 1. Было выделено четыре символа.tracted должен вернуть указанный выше результат.

В следующем примере показано, как указать начальную позицию:

SELECT substring('Guru99' from 1 for 4);

Команда вернет следующее:

PostgreSQL Substring

Мы уточнили, что бывшийtracПодстрока должна начинаться с позиции 1, и из нее должны быть исключены 4 символа.tracТед.

Давайте выйдемtracт 99 из строки Guru99:

SELECT substring('Guru99' from 5);

Команда вернет следующее:

PostgreSQL Substring

Мы указали начальную позицию равной 5. Поскольку количество символов, которые необходимо вывести,tracТед не был указан, бывшийtracОна дошла до конца струны.

Вот еще один пример:

SELECT substring('Guru99' from 5 for 2);

Команда вернет следующее:

PostgreSQL Substring

Мы начали extracна позиции 5, и 2 символа были исключены.tracТед.

Рассмотрим таблицу книги, приведенную ниже:

PostgreSQL Таблица подстрок книги

Мы хотим получить приблизительное представление о названии каждой книги. Мы можем, например,tracтолько первые 15 символов из столбца «Имя» таблицы:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Команда вернет следующее:

PostgreSQL Результат подстроки

Теперь у нас есть приблизительное представление о названии каждой книги.

Сопоставление подстрок с помощью регулярного выражения SQL

In PostgreSQLвы можете extracПодстрока, соответствующая указанному регулярному выражению POSIX. В данном случае функция substring использует следующий синтаксис:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Ниже приведено объяснение указанных выше параметров. Строка — это исходная строка, чей тип данных Тип данных — varchar, char, string и так далее. matching_pattern — это шаблон, используемый для поиска в строке.

Примеры

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Команда вернет следующее:

Сопоставление подстрок с помощью регулярного выражения SQL

Наша входная строка — «Ваш возраст — 22». В шаблоне мы ищем числовой шаблон; когда он найден, функция подстроки выполняет поиск.tracТам всего два персонажа.

Как сопоставлять подстроки с помощью pgAdmin

Теперь давайте посмотрим, как эти действия выполняются с помощью pgAdmin. Запросы, не требующие базы данных, можно выполнять непосредственно из окна редактора запросов. Просто сделайте следующее:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2) В pgAdmin нажмите на значок «Инструмент запросов».

Сопоставление подстрок с помощью pgAdmin

Откроется окно редактора запросов.

Шаг 3) Введите следующий запрос в окне редактора.

SELECT substring('Guru99' for 4);

Шаг 4) Нажмите значок «Выполнить», чтобы выполнить запрос.

Сопоставление подстрок с помощью pgAdmin

Шаг 5) Выполнение запроса завершено. Он должен вернуть следующее:

Сопоставление подстрок с помощью pgAdmin

Пример 2:

SELECT substring('Guru99' from 1 for 4);

Он должен вернуть следующее:

Сопоставление подстрок с помощью pgAdmin

Вот следующий пример:

SELECT substring('Guru99' from 5);

Он должен вернуть следующее:

Сопоставление подстрок с помощью pgAdmin

Пример 3:

SELECT substring('Guru99' from 5 for 2);

Он должен вернуть следующее:

Сопоставление подстрок с помощью pgAdmin

Теперь давайте запустим пример, используя таблицу Book демонстрационной базы данных:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2) В левой панели навигации нажмите «Базы данных», затем нажмите «Демоверсия».

Сопоставление подстрок с помощью pgAdmin

Шаг 3) Введите запрос в редакторе запросов:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Шаг 4) Нажмите кнопку «Выполнить».

Сопоставление подстрок с помощью pgAdmin

Он должен вернуть следующее:

PostgreSQL Результат подстроки

Теперь у нас есть общее представление о названии каждой книги.

Сопоставление подстрок с помощью регулярного выражения SQL

Чтобы сделать то же самое в pgAdmin, выполните следующие действия:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2) Нажмите значок Инструмента запросов.

Сопоставление подстрок с помощью регулярного выражения SQL

Откроется окно редактора запросов.

Шаг 3) Введите следующий запрос в окне редактора.

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Шаг 4) Нажмите значок «Выполнить», чтобы выполнить запрос.

Сопоставление подстрок с помощью регулярного выражения SQL

Он должен вернуть следующее:

Сопоставление подстрок с помощью регулярного выражения SQL

Загрузите базу данных, используемую в этом руководстве.

Часто задаваемые вопросы (FAQ)

SUBSTR — это сокращенный псевдоним SUBSTRING, возвращающий часть строки. SUBSTRING также поддерживает стандартные для SQL ключевые слова FROM и FOR, а также регулярные выражения POSIX, в то время как SUBSTR принимает только аргументы позиции и длины, разделенные запятыми.

PostgreSQL Функция SUBSTRING использует отсчет с единицы, поэтому первый символ находится в позиции 1, а не 0. Передача начальной позиции 1 возвращает строку, начиная с первого символа.

Когда шаблон POSIX не совпадает ни с чем, функция SUBSTRING возвращает NULL, а не пустую строку. Проверка результата с помощью IS NULL позволяет обрабатывать строки, в которых ожидаемый шаблон отсутствует.

Используйте регулярное выражение, которое захватывает то, что следует за символом. Например, SUBSTRING(email FROM '@(.*)') возвращает все, что находится после знака @, предоставляя вам доменную часть каждого адреса электронной почты.

Используйте SUBSTRING, если вам нужен первый совпавший текст в виде простого значения. Выбирайте regexp_matches(), если вам нужно, чтобы все совпадения или несколько групп захвата возвращались в виде массива, поскольку SUBSTRING возвращает только первое совпадение.

Искусственный интеллект, такой как GitHub Copilot, преобразует описание на простом английском языке в шаблон POSIX, объясняет, чему соответствует каждый токен, и предлагает тестовые строки, что сокращает количество проб и ошибок при построении примеров подстрок.tracвопросы.

Да. Опишите нужную часть текста, и ИИ-помощник создаст запрос SUBSTRING с указанием правильных позиций или регулярного выражения, который вы сможете запустить и доработать в pgAdmin.

Да, по умолчанию сопоставление POSIX SUBSTRING чувствительно к регистру. Чтобы сопоставить данные независимо от регистра, преобразуйте оба входных параметра в нижний регистр, например, SUBSTRING(lower(name) FROM lower(pattern)), чтобы буквы верхнего и нижнего регистра обрабатывались одинаково.

Подведем итог этой публикации следующим образом: