mysql substring substring_index functions with examples
Сазнајте више о функцијама МиСКЛ СУБСТРИНГ и СУБСТРИНГ_ИНДЕКС и њиховој употреби са више примера:
МиСКЛ функција подниза користи се за издвајање подниза или низа дела према улазном низу. Као што назив сугерира, функција Подниз ради на улазном низу и враћа мањи подниз у односу на наведене опције.
Такође ћемо сазнати о другој варијанти СУБСТРИНГА под називом СУБСТРИНГ_ИНДЕКС. Ова функција прихвата вредност знака или низа као граничник и извршава претрагу према датој вредности граничника.
Такође ћемо погледати неке примере да бисмо разумели како се ове функције могу користити док се подаци траже као део СЕЛЕЦТ упита.
Шта ћете научити:
МиСКЛ СУБСТРИНГ
Синтакса:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Постоје 2 начина на која можемо користити функцију СУБСТРИНГ.
Хајде да разумемо синтаксу пре него што уђемо у примере.
- {Стринг Валуе}: Ово је стварна вредност низа или име колоне која садржи низ који ће се обрађивати.
- {старт_индек}: старт_индек је индекс са леве или десне стране где би подниз био покренут. Вредности могу бити позитивне или негативне, у зависности од тога желимо ли издвојити Стринг са леве или десне стране. То ће постати јасније на примерима.
- {цоунт}: Ово поље није обавезно и наводи број знакова из старт_индек поље за које треба издвојити подниз. Ако није поменуто, онда цео низ почевши од подударања старт_индек би био враћен.
Формат2 је варијација формата1, осим што је читљивији користећи кључне речи ФРОМ и ФОР. Дакле, овде се користи ФРОМ пре него што се помене старт_индек вредност, а ФОР се користи пре помињања рачунати .
Погледајмо неколико примера за разумевање функције МиСКЛ СУБСТРИНГ.
Узмимо вредност уноса низа као Помоћ за тестирање софтвера
Стринг индекси ће изгледати као испод табеле
1 | два | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Једанаест | 12 | 13 | 14 | петнаест | 16 | 17 | 18 | 19 | двадесет | двадесет један |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
С. | или | ф | т | у | до | р | је | Т. | је | с | т | и | н | г | Х. | је | л | стр |
Пример МиСКЛ СУБСТРИНГ-а
Без грофа
Претпоставимо да желимо да издвојимо текст помоћи из горњег низа - Х има индекс 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
Овде смо описали и почетни индекс и број знакова као део упита да бисмо добили тражени резултат.
Са негативним индексним вредностима
До сада смо за примере које смо видели навели старт_индек као позитивна вредност.
Такође можемо одредити старт_индек као негативан, што једноставно значи да ће уместо да броји слева, МиСКЛ механизам покушати да изброји почетни индекс од краја низа.
Да видимо пример
За нашу Стринг „Помоћ за тестирање софтвера“, додајте ред у наставку да бисмо идентификовали праве индексе
Л | 1 | два | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Једанаест | 12 | 13 | 14 | петнаест | 16 | 17 | 18 | 19 | двадесет | двадесет један |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
С. | или | ф | т | у | до | р | је | Т. | је | с | т | и | н | г | Х. | је | л | стр | |||
Р. | двадесет један | двадесет | 19 | 18 | 17 | 16 | петнаест | 14 | 13 | 12 | Једанаест | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | два | 1 |
Дакле, доњи ред овде представља праве индексе. Сада претпоставимо да желимо да издвојимо реч „Тестирање“ помоћу функције МиСКЛ СУБСТРИНГ са правим индексом.
Десни индекс за „Т“ у тестирању је 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
Као што видите у примеру изнад, помињање правих индекса као негативне вредности и даље ће дати исти резултат.
Индекс ван граница
Покушајте сада са неким негативним сценаријима
- Када наведени старт_индек не постоји: тј. наведени индекс је ван граница, тада би излаз био празан.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Када је наведено бројање негативно или веће од укупне дужине низа, тада би излаз био само остатак низа (започињући наведени старт_индек).
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
Овде такође неће бити грешке и постојаће само празан низ који ће бити излаз.
МиСКЛ СУБСТРИНГ_ИНДЕКС
Ово је још једна варијанта МиСКЛ СУБСТРИНГ функције.
Овде, уместо да поменемо стварну вредност старт_индек, можемо једноставно да поменемо знак и индекс и број пута колико је потребно да се тражи граничник пре него што се врати излаз.
Овде је важно напоменути СУБСТРИНГ_ИНДЕКС
МиСКЛ СУБСТРИНГ ИНДЕКС функција:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {СтрингВалуе / Цолумн}: Стварни унос низа или назив колоне у СЕЛЕЦТ упиту.
- Разграничник: Треба потражити карактер или подниз да би се преостали низ издвојио као излаз. Ова вредност разликује велика и мала слова, па би је требало навести онако како се појављује у стварном низу.
- н: Бројило граничника - тј. Колико пута треба тражити граничник пре враћања низа.
Да схватимо ово уз помоћ неких примера.
Користићемо исти низ „Помоћ за тестирање софтвера“ као и наш улазни низ за све примере о којима ћемо разговарати у следећем одељку испод.
Тражење лика
Док се тражи знак „Т“, излаз би био „Софтвер“. Приметите да ће бити укључен и додатни простор после речи Софтвер.
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, излаз ће бити Стринг док се не постигне прва појава „е“.
Промените број на 2 за исти знак „е“.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Сада, видимо, враћа се подниз до другог појављивања знака „е“.
Узмите још један пример да бисте схватили да ИНДЕКС СУБСТРИНГ-а разликује велика и мала слова. Покушајмо са словом „т“ уместо „Т“
повезани чвор листе ц ++
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Трагање за низом
Функцију СУБСТРИНГ ИНДЕКС можемо користити за претрагу низа уместо карактера. Потражимо реч „тестирање“.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Тражење непостојећег низа
Коришћење СУБСТРИНГ ИНДЕКС-а са низом који не постоји.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Резултат би овде могао бити мало неочекиван. Али пошто МиСКЛ Енгине не може да пронађе тражено подударање, враћа цео низ као излаз.
Тражење знака или низа обрнутим редоследом
Слично функцији СУБСТРИНГ, функција СУБСТРИНГ ИНДЕКС такође омогућава бројање као негативне бројеве. То значи да ће, уместо да се креће слева удесно, МиСКЛ Енгине покушати да пронађе подударање с десна на лево.
Схватите ово уз помоћ неколико примера.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
У горњем примеру можете видети да је граничник „Т“ док је бројање -1. Дакле, излаз би био Субстринг с десне стране док се не добије прво подударање слова „Т“.
Апликације функције МиСКЛ СУБСТРИНГ
Ми обично користимо функције МиСКЛ Стринг док тражимо податке из 1 или више табела. Може се користити за поделу вредности у колони или само за приказ основних вредности према потреби.
Пример: Претпоставимо да имамо табелу са подацима о запосленом која се састоји од идентитета, имена и адресе.
А колона адресе је формата - {ХоусеНо}, {СтреетНаме}
Испод је скрипта за креирање табеле и уметање лажних података:
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);
Користите МиСКЛ СУБСТРИНГ функцију да бисте добили Кућни број извучено из колоне адреса као што је приказано доле.
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 |
У горњем упиту можете да видите да смо користили функцију СУБСТРИНГ_ИНДЕКС за добивање кућног броја из колоне адреса и користили смо „,“ као граничник.
Слично овоме, може бити много апликација у којима бисмо желели да издвојимо Стринг да бисмо из неког већег уноса низа или вредности колоне преузели неке значајне информације.
Често постављана питања
П # 1) Која МиСКЛ функција враћа положај првог појављивања СУБСТРИНГА у низу?
Одговор: МиСКЛ пружа 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) Шта је СУБСТРИНГ_ИНДЕКС у МиСКЛ-у?
Одговор: Функција СУБСТРИНГ_ИНДЕКС је варијанта функције СУБСТРИНГ. Иако у нормалној функцији СУБСТРИНГ морате индекс споменути као број у улазном низу, за функцију СУБСТРИНГ_ИНДЕКС можете споменути или знак или мањи подниз који треба тражити.
Предложено читање = >> Водич за МиСКЛ ЦОУНТ
Закључак
У овом упутству смо сазнали о функцијама МиСКЛ СУБСТРИНГ и СУБСТРИНГ_ИНДЕКС. Обе функције издвајају подниз из датог улазног низа, али раде на мало другачији начин.
СУБСТРИНГ очекује индекс као стварне бројеве, док СУБСТРИНГ_ИНДЕКС може имати граничник наведен као знак или вредност низа, а затим МиСКЛ Енгине може издвојити тражени низ или знак који се подударају.
Обе ове функције се углавном користе тамо где се колона која садржи више информација може издвојити у потколоне помоћу логике извлачења низа на основу одговарајућих захтева.
Препоручено читање
- Водич за Ц # низ - Методе низања са примерима кода
- Метода Јава подниз () - Водич са примерима
- Јава Стринг садржи () Водич за методе са примерима
- Јава Стринг цомпареТо метод са примерима програмирања
- Функције низа у језику Ц ++: гетлине, подниз, дужина низа и још много тога
- Функције претварања низа Ц ++: стринг у инт и инт у низ
- Питхон Стринг функције
- Функције МиСКЛ ЦОНЦАТ и ГРОУП_ЦОНЦАТ са примерима