sql >> Database >  >> RDS >> MariaDB

Selecteer alles voor of na een bepaald personage in MariaDB

In MariaDB kunt u de SUBSTRING_INDEX() . gebruiken functie om alles voor of na een bepaald teken (of tekens) in een tekenreeks terug te geven.

Deze functie accepteert drie argumenten; de tekenreeks, het scheidingsteken en het aantal keren dat dat scheidingsteken voorkomt om te bepalen welke subtekenreeks moet worden geretourneerd.

Voorbeelden

We kunnen zien hoe de functie werkt in de volgende voorbeelden.

Selecteer eerst alles

Om alles vóór een bepaald teken te selecteren, maakt u van het derde argument een positieve waarde:

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);

Resultaat:

Red,Green

In dit voorbeeld selecteren we alles vóór de tweede komma. Dit wordt gedaan door een komma te gebruiken (, ) als scheidingsteken, en 2 als de telling.

Ik heb in dat voorbeeld een komma gebruikt, maar het kan elk teken of elke tekenreeks zijn:

SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);

Resultaat:

Red or Green

Selecteer daarna alles

Gebruik een negatieve waarde om alles na een bepaald teken te selecteren:

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);

Resultaat:

Green,Blue

Houd er rekening mee dat de negatieve waarde betekent dat deze vanaf rechts wordt ingeteld en vervolgens de subtekenreeks rechts van het scheidingsteken selecteert.

Als het scheidingsteken niet wordt gevonden

Als het scheidingsteken niet in de tekenreeks wordt gevonden, wordt de tekenreeks volledig geretourneerd.

Voorbeeld:

SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);

Resultaat:

Red,Green,Blue

In dit geval wordt de hele tekenreeks volledig geretourneerd omdat we een koppelteken hebben gebruikt (- ) als scheidingsteken, maar er waren geen koppeltekens in de tekenreeks.

We zouden hetzelfde resultaat krijgen als de string doet het scheidingsteken bevatten, maar onze count overschrijdt het aantal scheidingstekens in de tekenreeks.

Voorbeeld:

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 10);

Resultaat:

Red,Green,Blue

Hoofdlettergevoeligheid

De SUBSTRING_INDEX() functie voert een hoofdlettergevoelige zoekopdracht uit naar het scheidingsteken. Dat wil zeggen, het scheidingsteken moet het juiste hoofdlettergebruik zijn voordat het overeenkomt.

Onjuiste hoofdletters

Hier is een voorbeeld waarbij de zaak niet overeenkomt:

SELECT SUBSTRING_INDEX('Red and green and blue', 'AND', 2);

Resultaat:

Red and green and blue

We krijgen de hele reeks volledig.

Juiste zaak

Hier is hetzelfde voorbeeld, maar waar de zaak overeenkomt:

SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);

Resultaat:

Red and green

  1. Hoe kan ik toestaan ​​dat een parameter in een vervolgkeuzelijst in SSRS een standaardwaarde heeft van -- All -- ?

  2. Oracle JDeveloper gebruiken met MySQL Database Service op Oracle Cloud Platform, deel 2

  3. Hoe u id's op Bijlagen kunt retourneren met Ibatis (met RETURNING-sleutelwoord)

  4. Bind matrixparameter aan native query