mysql substring substring_index functions with examples
Дізнайтеся про функції MySQL SUBSTRING та SUBSTRING_INDEX та їх використання на кількох прикладах:
Функція MySQL Substring використовується для вилучення підрядка або рядка частини проти вхідного рядка. Як випливає з назви, функція Substring працює на введеному рядку і повертає меншу підрядку проти вказаних параметрів.
Ми також дізнаємося про інший варіант ПІДТРИБКИ, який називається SUBSTRING_INDEX. Ця функція приймає значення символу або рядка як роздільник та виконує пошук за заданим значенням роздільника.
Ми також розглянемо кілька прикладів, щоб зрозуміти, як ці функції можна використовувати під час запитів даних як частини запитів SELECT.
Що ви дізнаєтесь:
ПІДТРИМУВАННЯ MySQL
Синтаксис:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Є два способи, за допомогою яких ми можемо використовувати функцію SUBSTRING.
Давайте розберемося в синтаксисі, перш ніж заглибитися у приклади.
- {Значення рядка}: Це фактичне значення рядка або ім'я стовпця, що містить рядок, над яким слід працювати.
- {start_index}: start_index - це індекс ліворуч або праворуч, де буде розпочато підрядок. Значення можуть бути позитивними чи негативними залежно від того, чи хочемо ми витягнути рядок з лівого або правого боку відповідно. Це стане зрозумілішим на прикладах.
- {рахувати}: Це поле є необов’язковим і вказує кількість символів із start_index поле, для якого потрібно витягти Підрядок. Якщо не згадано, то весь рядок, починаючи з відповідності start_index буде повернено.
Формат2 є різновидом формату1, за винятком того, що він читабельніший за допомогою ключових слів FROM і FOR. Отже, тут використовується FROM перед згадуванням start_index значення, а FOR використовується перед згадкою про рахувати .
Давайте подивимося кілька прикладів, щоб зрозуміти функцію MySQL SUBSTRING.
Візьмемо значення вхідного рядка як Довідка щодо тестування програмного забезпечення
Індекси рядків виглядатимуть, як показано нижче в таблиці
один | два | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | одинадцять | 12 | 13 | 14 | п’ятнадцять | 16 | 17 | 18 | 19 | двадцять | двадцять один |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | або | f | т | в | до | р | є | Т | є | s | т | i | п | g | H | є | л | стор |
Приклад підготовки MySQL
Без графа
Припустимо, ми хочемо витягти текст довідки з наведеного вище рядка - H має індекс 18
Давайте розглянемо запит нижче:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Тут важливо зауважити, що ми не згадували жодного значення для рахувати, але ми все ще отримуємо правильний рядок - це тому, що коли пропущено відлік, повертається весь рядок, починаючи з даного індексу.
У цьому випадку, якщо згадати початковий індекс, наприклад, для «Т» (індекс 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Як ви можете бачити вище, вихідні дані містять весь текст «Тестування довідки».
З графом
Тепер давайте розглянемо приклад, коли ми згадаємо кількість символів, які потрібно повернути.
Припустимо, ми просто хочемо витягти слово «Тестування» із рядка «Довідка щодо тестування програмного забезпечення». Тоді ми можемо згадати порахувати як - 7 (що є довжиною слова 'Тестування')
Давайте розглянемо запит нижче:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Тут ми описали як початковий індекс, так і кількість символів як частину запиту, щоб отримати необхідний результат.
З негативними значеннями індексу
Поки що для прикладів, які ми бачили, ми вказали start_index як позитивне значення.
Ми також можемо вказати start_index як негативний, що просто означає, що замість підрахунку зліва движок MySQL спробує підрахувати індекс початку з кінця рядка.
Подивимось приклад
Для нашого рядка «Довідка щодо тестування програмного забезпечення» додамо рядок нижче, щоб визначити правильні індекси
L | один | два | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | одинадцять | 12 | 13 | 14 | п’ятнадцять | 16 | 17 | 18 | 19 | двадцять | двадцять один |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | або | f | т | в | до | р | є | Т | є | s | т | i | п | g | H | є | л | стор | |||
Р. | двадцять один | двадцять | 19 | 18 | 17 | 16 | п’ятнадцять | 14 | 13 | 12 | одинадцять | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | два | один |
Отже, нижній рядок тут представляє правильні індекси. Тепер припустимо, ми хочемо витягти слово «Тестування», використовуючи функцію MySQL SUBSTRING з правильним індексом.
Правий індекс для «Т» у тестуванні дорівнює 12 (а лівий індекс - 10)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Як ви можете бачити у прикладі вище, згадування правильних індексів як від’ємне значення все одно дасть той самий результат.
Індекс поза межами
Тепер спробуйте кілька негативних сценаріїв
- Коли вказаний start_index не існує: тобто вказаний індекс виходить за межі, тоді результат буде порожнім.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Коли зазначений відлік є від'ємним або більше загальної довжини рядка, то результатом буде просто решта рядка (починаючи вказаний start_index).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Ви можете бачити вище, тут кількість згадується як 100, але рядок має лише 21 символ.
- Давайте спробуємо ще один сценарій, коли підрахунок буде згаданий як негативний.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Тут також не буде помилок, а буде просто порожній рядок, який буде вихідним.
MySQL SUBSTRING_INDEX
Це ще один варіант функції MySQL SUBSTRING.
Тут, замість того, щоб згадувати фактичне значення start_index, ми можемо просто згадати символ та індекс, а також кількість разів, коли потрібно шукати роздільник перед поверненням результату.
Важливим моментом тут є SUBSTRING_INDEX
Функція ПІДТРИМУВАННЯ MySQL:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Фактичне введення рядка або ім'я стовпця у запиті SELECT.
- Розділювач: Це символ або підрядок, який потрібно шукати, щоб витягнути решту рядка як результат. Це значення чутливе до регістру, тому його слід вказувати так, як воно відображається у фактичному рядку.
- n: Кількість розділювачів - тобто кількість разів, в яких потрібно шукати роздільник, перед поверненням рядка.
Давайте розберемося в цьому за допомогою деяких прикладів.
Для всіх прикладів, які ми будемо обговорювати в наступному розділі нижче, ми будемо використовувати той самий рядок «Довідка щодо тестування програмного забезпечення», що і наш вхідний рядок.
Пошук персонажа
Під час пошуку символу 'T' виводиться 'Software'. Зверніть увагу, що додатковий простір після слова Програмне забезпечення буде також включено.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Шукайте персонажа, який з’являється більше одного разу. Ось воно - 'е'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
У цьому прикладі: оскільки ми вказали лічильник як 1, результат буде String, доки не буде досягнуто перше входження 'e'.
Змініть рахунок на 2 для того самого символу 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Тепер ми бачимо, що повертається підрядок до другого входження символу „e“.
Візьміть інший приклад, щоб зрозуміти, що ІНДЕКС СУБСТРИНГУ чутливий до регістру. Давайте спробуємо з буквою «t» замість «T»
життєвий цикл помилок при тестуванні програмного забезпечення
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Пошук струни
Ми можемо використовувати функцію SUBSTRING INDEX для пошуку рядка замість символу. Давайте пошукаємо слово «Тестування».
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Пошук неіснуючої рядка
Використання SUBSTRING INDEX із рядком, якого не існує.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Результат може бути трохи несподіваним тут. Але оскільки движок MySQL не може знайти необхідний збіг, він повертає весь рядок як вихідний результат.
Пошук символу або рядка в зворотному порядку
Подібно до функції SUBSTRING, функція SUBSTRING INDEX також дозволяє мати відлік, згаданий як від’ємні числа. Це означає, що замість обходу зліва направо MySQL Engine намагатиметься знайти збіг справа наліво.
Зрозумійте це за допомогою деяких прикладів.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
У наведеному вище прикладі ви можете побачити роздільник „T”, а кількість - -1. Отже, висновком буде Substring справа, доки не буде отримано перший збіг для букви «T».
Застосування функції MySQL SUBSTRING
Зазвичай ми використовуємо функції MySQL String під час запитів даних з 1 або декількох таблиць. Його можна використовувати для розділення значень у стовпці або просто для відображення основних значень відповідно до потреби.
Приклад: Припустимо, що у нас є таблиця даних про працівника, що складається з ідентифікатора, імені та адреси.
А стовпець адреси має формат - {HouseNo}, {StreetName}
Нижче наведено сценарій для створення таблиці та вставки фіктивних даних:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
Використовуйте функцію MySQL SUBSTRING, щоб мати номер будинку вилучено зі стовпця адреси, як показано нижче.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Вихід:
ім'я | будинок_но | адресу | вік |
---|---|---|---|
Акаш мальхотра | 22 | 22, Колонія оборони | 24 |
Стів Вільсон | 12/4 | 12/4, вулиця Вільсона | 28 |
Моніка Сінгх | 190 | 190, Сміт Лейн | 32 |
У наведеному вище запиті ви можете бачити, що ми використовували функцію SUBSTRING_INDEX для отримання номера будинку із стовпця адреси, і ми використовували «,» як роздільник.
Подібно до цього, може бути багато додатків, де ми хотіли б витягти рядок, щоб отримати якусь значущу інформацію з більшого введення рядка або значення стовпця.
Часті запитання
Q # 1) Яка функція MySQL повертає позицію першого входження SUBSTRING у рядок?
Відповідь: MySQL надає 2 функції для повернення або вилучення ПІДСТРОЙКИ із заданого значення рядка або стовпця.
- ПІДТРИМКА
Приклад:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- ІНДЕКС ПІДТРИМУВАННЯ
Приклад:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) Що таке SUBSTRING_INDEX у MySQL?
Відповідь: Функція SUBSTRING_INDEX - це варіант функції SUBSTRING. Хоча в звичайній функції SUBSTRING вам потрібно вказати індекс як число у вхідному рядку, для функції SUBSTRING_INDEX ви можете вказати або символ, або менший підрядок, який потрібно шукати.
Пропоноване читання = >> Підручник з MySQL COUNT
Висновок
У цьому підручнику ми дізналися про функції MySQL SUBSTRING та SUBSTRING_INDEX. Обидві функції витягують підрядок із заданого вхідного рядка, але працюють дещо по-іншому.
SUBSTRING очікує, що індекс буде фактичним числом, тоді як SUBSTRING_INDEX може мати роздільник, вказаний як символ або значення рядка, і тоді движок MySQL може витягувати з необхідного відповідного рядка або символу.
Обидві ці функції в основному використовуються там, де стовпець, що має кілька частин інформації, може бути витягнутий у підстолбці за допомогою логічної екстракції рядків на основі відповідних вимог.
Рекомендована література
- Підручник з рядків C # - Рядові методи з прикладами коду
- Метод підстроки Java () - Підручник із прикладами
- Рядок Java містить () Підручник із методів із прикладами
- Рядок Java порівняти до методу з прикладами програмування
- Функції рядка в C ++: getline, substring, length string & More
- Функції перетворення рядків на C ++: рядок до int та int до рядка
- Функції рядка Python
- Функції MySQL CONCAT та GROUP_CONCAT із прикладами