mysql substring substring_index functions with examples
Научете за функциите на MySQL SUBSTRING и SUBSTRING_INDEX и тяхното използване с множество примери:
Функцията MySQL Substring се използва за извличане на подниз или низ от част срещу входния низ. Както подсказва името, функцията 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}); Има 2 начина, по които можем да използваме функцията SUBSTRING.
Нека разберем синтаксиса, преди да се потопим в примерите.
- {Стойност на низа}: Това е действителната стойност на String или името на колоната, съдържаща низа, по който трябва да се работи.
- {start_index}: start_index е индексът отляво или отдясно, където ще бъде стартиран поднизът. Стойностите могат да бъдат положителни или отрицателни в зависимост от това дали искаме да извлечем String съответно от лявата или дясната страна. Това ще стане по-ясно с примерите.
- {броя}: Това поле не е задължително и указва броя на символите от start_index поле, за което трябва да се извлече подниза. Ако не е споменато, тогава целият низ, започвайки от съвпадението start_index ще бъдат върнати.
Форматът2 е вариант на формат1, с изключение на това, че е по-четлив, като се използват ключови думи FROM и FOR. Така че тук се използва FROM преди да се спомене start_index стойност и се използва FOR преди да се спомене броя .
Нека да видим няколко примера за разбиране на функцията MySQL SUBSTRING.
Нека приемем стойността на String Input като Помощ за тестване на софтуер
Индексите на низовете ще изглеждат като таблицата по-долу
| 1 | две | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | единадесет | 12 | 13 | 14. | петнадесет | 16. | 17 | 18. | 19. | двайсет | двадесет и едно |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| С | или | е | т | в | да се | r | е | т | е | с | т | i | н | ж | З. | е | л | стр |
Пример за SUBSTRING на MySQL
Без граф
Да предположим, че искаме да извлечем помощния текст от горния низ - H има индекс 18
Нека да видим заявката по-долу:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help Тук е важно да се отбележи, че не сме споменали никаква стойност за броя, но все още получаваме правилния низ - това е така, защото когато броенето е пропуснато, се връща целият низ, започващ от дадения индекс.
В този случай, ако споменем началния индекс, например, за „T“ (индекс 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 ще се опита да преброи началния индекс от края на String.
Нека да видим пример
За нашата „Помощ за тестване на софтуер“, нека добавим ред по-долу, за да идентифицираме правилните индекси
| L | 1 | две | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | единадесет | 12 | 13 | 14. | петнадесет | 16. | 17 | 18. | 19. | двайсет | двадесет и едно |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| С | или | е | т | в | да се | r | е | т | е | с | т | i | н | ж | З. | е | л | стр | |||
| R | двадесет и едно | двайсет | 19. | 18. | 17 | 16. | петнадесет | 14. | 13 | 12 | единадесет | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | две | 1 |
И така, долният ред тук представлява правилните индекси. Сега да предположим, че искаме да извлечем думата „Тестване“ с помощта на функцията MySQL SUBSTRING с правилния индекс.
Десният индекс за „T“ при тестване е 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.
- Разделител: Това е символът или поднизът, който трябва да се търси, за да се извлече останалият низ като изход. Тази стойност е чувствителна към малки и големи букви, така че трябва да бъде посочена така, както се появява в действителния низ.
- н: Брой разделители - т.е. броя пъти, в които разделителят трябва да бъде търсен, преди да върне низа.
Нека разберем това с помощта на някои примери.
Ще използваме същия низ „Помощ за тестване на софтуер“ като нашия входен низ за всички примери, които ще обсъдим в следващия раздел по-долу.
Търсене на герой
Докато се търси символ „T“, изходът ще бъде „Софтуер“. Забележете, че ще бъде включено и допълнителното пространство след думата Софтуер.
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“
как да използвам jar файл
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 със String, който не съществува.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help Резултатът може да е малко неочакван тук. Но тъй като MySQL Engine не може да намери необходимото съвпадение, той връща целия низ като изход.
Търсене на символ или низ в обратен ред
Подобно на функцията 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, за да получим House-Number от колоната с адреси и използвахме ‘,’ като разделител.
Подобно на това, може да има много приложения, в които бихме искали да извлечем String, за да извлечем някаква смислена информация от по-голям String Input или стойността на колоната.
често задавани въпроси
В # 1) Коя функция на MySQL връща позицията на първото появяване на СУБСТРИНГ в низа?
Отговор: 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 В # 2) Какво е SUBSTRING_INDEX в MySQL?
Отговор: Функцията SUBSTRING_INDEX е вариант на функцията SUBSTRING. Докато в нормалната функция SUBSTRING трябва да споменете индекса като число във входния низ, за функцията SUBSTRING_INDEX можете да споменете или символ, или по-малък подниз, който да се търси.
Предложено четене = >> MySQL COUNT Урок
Заключение
В този урок научихме за функциите MySQL SUBSTRING и SUBSTRING_INDEX. И двете функции извличат Substring срещу дадения входен низ, но работят по малко по-различен начин.
SUBSTRING очаква индекса като действителните числа, докато SUBSTRING_INDEX може да има разделителя, посочен като символ или стойност на String, и тогава MySQL Engine може да извлече срещу необходимия съвпадащ низ или символ.
И двете функции се използват до голяма степен, когато колона, съдържаща множество части от информация, може да бъде извлечена в подколони, използвайки логика за извличане на низове въз основа на подходящи изисквания.
Препоръчително четене
- Инструкция за C # String - Методи за низове с примери за кодове
- Метод на Java substring () - Урок с примери
- Java String съдържа () урок за методи с примери
- Java String compareTo метод с примери за програмиране
- Функции на низове в C ++: getline, substring, дължина на низа & More
- Функции за преобразуване на низове на C ++: низ към int и int към низ
- Функции на низовете на Python
- Функции на MySQL CONCAT и GROUP_CONCAT с примери