PostgreSQL Приклад функції SUBSTRING() із регулярним виразом

⚡ Розумний підсумок

PostgreSQL ПІДСТРІНКА extracts повертає частину рядка, використовуючи необов'язкову початкову позицію та довжину, а також зіставляє текст з регулярним виразом POSIX для вилучення шаблонів, таких як числа або коди.

  • 📋 Синтаксис: підрядок(рядок [від початку] [для довжини]) повертає частину вихідного рядка.
  • 1️⃣ Позиції: Позиції символів починаються з 1, а якщо пропустити довжину, то читання веде до кінця рядка.
  • 🔎 Регулярний вираз: SUBSTRING(рядок З шаблону) extracts перший текст, що відповідає регулярному виразу POSIX.
  • 🧮 Гроуping: Група в дужках у шаблоні повертає лише ту захоплену частину збігу.
  • 🖥️ pgAdmin: Кожен запит підрядка виконується однаково в редакторі запитів pgAdmin.
  • 🤖 Допомога зі штучним інтелектом: Помічники штучного інтелекту генерують та пояснюють шаблони регулярних виразів для точного визначення підрядка extrac.

PostgreSQL Функція SUBSTRING з регулярним виразом

Що таке PostgreSQL Підрядок?

Команда PostgreSQL Функція підрядка допомагає вам extract та повертає частину рядка. Замість повернення цілого рядка, він повертає лише його частину, що корисно для обрізання кодів та читання полів фіксованої ширини.

синтаксис

Команда PostgreSQL функція substring має такий синтаксис:

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

Параметри

З функцією substring використовуються такі параметри:

рядок Вихідний рядок, тип даних якого varchar, char, string тощо.
початкова_позиція Необов'язковий параметр. Він позначає місце, де знаходиться ексtracРозпочнеться запис рядка. Якщо пропустити цей параметр, тодіtracВиконання починається з позиції 1, яка є першим символом у рядку.
Необов'язковий параметр. Він позначає кількість символів, які потрібно вивести.tracз рядка. Якщо пропустити цей параметр, функція extracts від початкової_позиції до кінця рядка.

прикладів

У цьому прикладі ми хочемо extracперші 4 символи слова Guru99:

SELECT substring('Guru99' for 4);

Команда поверне наступне:

PostgreSQL Підрядок

Ми не вказали початкову позицію, тому колишнійtracВиведення підрядка почалося з позиції 1. Було виключено чотири символиtracted повернути результат вище.

У наступному прикладі показано, як вказати початкову позицію:

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

Команда поверне наступне:

PostgreSQL Підрядок

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

Давайте прийдемоtract 99 з рядка Guru99:

SELECT substring('Guru99' from 5);

Команда поверне наступне:

PostgreSQL Підрядок

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

Ось ще один приклад:

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

Команда поверне наступне:

PostgreSQL Підрядок

Ми почали колишнюtracція в позиції 5, і 2 символи були видаленіtracТед.

Розгляньте наведену нижче книжкову таблицю:

PostgreSQL Таблиця підрядків книги

Ми хочемо отримати приблизне уявлення про назву кожної книги. Ми можемо екtracлише перші 15 символів зі стовпця імені таблиці:

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

Команда поверне наступне:

PostgreSQL Результат підрядка

Тепер ми маємо приблизне уявлення про назву кожної книги.

Зіставлення підрядків із регулярним виразом SQL

In PostgreSQL, ви можете колишнійtracпідрядок, що відповідає заданому регулярному виразу POSIX. У цьому випадку функція підрядка використовує такий синтаксис:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Ось пояснення вищезазначених параметрів. Рядок – це вихідний рядок, чий тип даних це varchar, char, string тощо. Зразок_відповідності – це шаблон, який використовується для пошуку в рядку.

прикладів

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

Команда поверне наступне:

Зіставлення підрядків із регулярним виразом SQL

Наш вхідний рядок — Ваш вік — 22 роки. У шаблоні ми шукаємо числовий шаблон; коли він знайдений, функція підрядка extracлише два символи.

Як зіставити підрядки за допомогою 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 бази даних Demo:

Крок 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

Завантажте базу даних, яка використовується в цьому посібнику

Поширені запитання

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

PostgreSQL SUBSTRING базується на одиниці, тому перший символ знаходиться в позиції 1, а не 0. Передавання початкової позиції 1 повертає рядок, починаючи з першого символу і далі.

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

Використовуйте регулярний вираз, який фіксує те, що йде після символу. Наприклад, SUBSTRING(email FROM '@(.*)') повертає все після знака @, надаючи вам частину домену кожної адреси електронної пошти.

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

Помічники штучного інтелекту, такі як GitHub Copilot, перетворюють опис простою англійською мовою на шаблон POSIX, пояснюють, чому відповідає кожен токен, і пропонують тестові рядки, що зменшує кількість спроб і помилок під час побудови підрядка ex.tracзапити.

Так. Опишіть потрібну частину тексту, і помічник штучного інтелекту створить виклик SUBSTRING з правильними позиціями або регулярним виразом, який ви можете запустити та уточнити в pgAdmin.

Так, зіставлення SUBSTRING у POSIX за замовчуванням враховує регістр. Щоб зіставлення відображалося незалежно від регістру, слід знизити обидва вхідні дані, наприклад, SUBSTRING(lower(name) FROM lower(pattern)), щоб великі та малі літери оброблялися однаково.

Підсумуйте цей пост за допомогою: