PostgreSQL SUBSTRING() Функция с Пример за Regex

⚡ Умно обобщение

PostgreSQL ПОДНИЗ extracts и връща част от низ, използвайки опционална начална позиция и дължина, а също така съпоставя текст с POSIX регулярен израз, за ​​да извлече модели като числа или кодове.

  • 📋 Синтаксис: подниз(низ [от началото] [за дължина]) връща част от изходния низ.
  • 1️⃣ позиции: Позициите на символите започват от 1, а пропускането на дължината чете до края на низа.
  • ???? Регекс: SUBSTRING(низ ОТ шаблон) extracts първият текст, съответстващ на POSIX регулярен израз.
  • 🧮 Grouping: Група в скоби в шаблона връща само тази заснета част от съвпадението.
  • pgAdmin: Всяка заявка за подниз се изпълнява по един и същи начин в редактора на заявки pgAdmin.
  • 🤖 Помощ за изкуствен интелект: Асистентите с изкуствен интелект генерират и обясняват шаблони за регулярни изрази за точен примерен поднизtracТА.

PostgreSQL Функция SUBSTRING с Regex

Какво е PostgreSQL Подниз?

- PostgreSQL Функцията за подниз ви помага даtract и връща част от низ. Вместо да връща целия низ, връща само част от него, което е полезно за изрязване на кодове и четене на полета с фиксирана ширина.

Синтаксис

- PostgreSQL функцията подниз приема следния синтаксис:

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

параметри

Следните параметри се използват с функцията substring:

низ Изходният низ, чийто тип данни е varchar, char, string и т.н.
начална_позиция Незадължителен параметър. Той обозначава мястото, където ехtracИзписването на низа ще започне. Ако пропуснете този параметър, ексtracНизът започва от позиция 1, която е първият символ в него.
Дължината Незадължителен параметър. Той обозначава броя на символите, които ще бъдат извлечени.tracted от низа. Ако пропуснете този параметър, функцията extracts от начална_позиция до края на низа.

Примери

В този пример искаме даtracпървите 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 и т.н. matching_pattern е шаблонът, използван за търсене в низа.

Примери

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 също така поддържа 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 шаблон, обясняват на какво съответства всеки токен и предлагат тестови низове, което намалява метода проба-грешка при изграждането на подниз ex.tracзапитвания.

Да. Опишете желаната част от текста и асистентът с изкуствен интелект ще изготви SUBSTRING извикване с правилните позиции или регулярен израз, което можете да изпълните и прецизирате в pgAdmin.

Да, съвпадението на POSIX SUBSTRING е чувствително към главни и малки букви по подразбиране. За да съвпадение без значение от главния и малкия регистър, намалете и двата входа, например SUBSTRING(lower(name) FROM lower(pattern)), така че главните и малките букви да се третират еднакво.

Обобщете тази публикация с: