sql >> Databáze >  >> RDS >> Mysql

Jak vybrat vše před/po určitém znaku v MySQL – SUBSTRING_INDEX()

Můžete použít MySQL SUBSTRING_INDEX() funkce vrátit vše před nebo za určitým znakem (nebo znaky) v řetězci.

Tato funkce vám umožňuje určit oddělovač, který se má použít, a můžete určit, který z nich (v případě, že je v řetězci více než jeden).

Syntaxe

Zde je syntaxe:

SUBSTRING_INDEX(str,delim,count)

Kde str je řetězec delim je oddělovač (od kterého chcete mít podřetězec vlevo nebo vpravo) a count určuje, který oddělovač (v případě, že se oddělovač v řetězci vyskytuje vícekrát).

Všimněte si, že oddělovač může být jeden znak nebo více znaků.

Příklad 1 – Vyberte vše vlevo

Chcete-li vybrat vše dříve určitý znak, použijte kladnou hodnotu:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);

Výsledek:

Cats,Dogs

V tomto příkladu vybereme vše před druhou čárkou. To se provádí pomocí čárky (, ) jako oddělovač a 2 jako hrabě.

Příklad 2 – Vyberte vše vpravo

Chcete-li vybrat vše po určitý znak, musíte použít zápornou hodnotu:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);

Výsledek:

Dogs,Rabbits

Všimněte si, že záporná hodnota znamená, že se bude počítat zprava, poté vyberte podřetězec napravo od oddělovače.

Co když se oddělovač neshoduje?

Pokud oddělovač v řetězci není nalezen, řetězec je jednoduše vrácen celý.

Příklad:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);

Výsledek:

Cats,Dogs,Rabbits

V tomto případě je vrácen celý řetězec, protože jsme použili pomlčku (- ) jako oddělovač, ale v řetězci nebyly žádné pomlčky.

Stejný výsledek bychom dostali, kdyby řetězec ano obsahovat oddělovač, ale náš count překračuje počet oddělovačů v řetězci.

Příklad:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);

Výsledek:

Cats,Dogs,Rabbits

Rozlišovat malá a velká písmena

SUBSTRING_INDEX() Funkce provádí vyhledávání oddělovače s rozlišením velkých a malých písmen. To znamená, že oddělovač musí být správný velikost písmen, než se bude shodovat.

Nesprávný případ

Zde je příklad, kdy případ neodpovídá:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);

Výsledek:

Cats and Dogs and Rabbits

Dostaneme celý řetězec v plné výši.

Správný případ

Nyní je zde stejný příklad, ale případ se shoduje:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);

Výsledek:

Cats and Dogs


  1. Zařazení SQL Serveru do distribuované transakce XA

  2. jak upravit velikost sloupce

  3. Analyzovat řetězec oddělený potrubím do sloupců?

  4. Jak obnovit databázi z C#