Lijst met tekenreeksfuncties

Meer functies dan datum en tijd - alleen het type String. Welke in SQL wordt gegeven door CHAR(n) en VARCHAR(n) typen. Laten we de meest populaire van hen herinneren:

Functie Beschrijving
1 LENGTE(str) Retourneert de lengte van de doorgegeven tekenreeks in bytes
2 CHAR_LENGTH(str) Retourneert de lengte van de doorgegeven tekenreeks in tekens
3 LOCEREN(substr,str), Zoekt naar een subtekenreeks in een tekenreeks die lijkt op de indexOf()-methode
4 LOCEREN(substr,str,pos) Zoekt naar een subtekenreeks in een tekenreeks die begint met pos
5 CONCAT(str1,str2,...) Voegt meerdere regels samen
6 SUBSTR(), SUBSTRING() Retourneert een subtekenreeks die wordt gegeven door een reeks tekens
7 LAGER(str) Converteert een tekenreeks naar kleine letters
8 BOVEN(str) Converteert een tekenreeks naar hoofdletters
9 VERVANGEN() Vervangt een subtekenreeks in een tekenreeks
10 OVEREENKOMST() Controleert of een tekenreeks overeenkomt met een bepaald patroon
elf TRIM(str) Knipt lege tekens aan het begin en einde van een string weg
12 LTRIM(str) Knipt lege tekens aan het begin van een string weg
13 RTRIM(str) Knipt lege tekens aan het einde van een string weg
14 TO_BASE64(str) Converteert een string naar Base64
15 VAN_BASE64(str) Converteert een string van Base64

Ik heb de functies met opzet in kleine groepen gegroepeerd om het gemakkelijker te maken om te begrijpen hoe ermee te werken. Hieronder zullen we één functie uit elke groep bekijken. U vindt een volledige lijst met functies voor het werken met strings in de officiële documentatie .

Laten we de string converteren

Laten we eerst eens kijken naar de eenvoudigste functies die een string simpelweg omzetten naar een iets andere vorm. Converteer bijvoorbeeld een tekenreeks naar hoofdletters en kleine letters. Over het algemeen is hun gedrag vergelijkbaar met dezelfde functies in de Java-taal.

Dus ik zal gewoon een tabel geven met een paar voorbeelden.

# Verzoek Resultaat
1 KIES LENGTE ('tekst') 4
2 SELECTEER LENGTE ('Hallo') 12
3 SELECTEER LAGER ('Hallo') Hallo
4 SELECTEER BOVEN ('Hallo') HALLO
5 SELECTEER SUBSTR ('Hallo', 2, 3) riv
6 SELECTEER SUBSTR ('Hallo, hoe gaat het?', 8) Hoe is het met je?

De functies werken zoals verwacht, net als hun tegenhangers van de JDK.

Het enige voorbehoud: in de eerste regel is het resultaat 4, niet 8. Het punt is dat 1 byte (ASCII-codering) wordt gebruikt in het verzoek om Latijnse tekens te coderen. Maar als u met gegevens uit de database werkt, hangt de lengte van de tekenreeks af van de coderingsinstellingen van de database . Je zult veel verrassingen tegenkomen tijdens het werken met de database :)

Complexe acties met strings

Laten we eens kijken naar complexere dingen bij het werken met strings. Wat zou jij bedenken...

Laten we taken uit de takentabel weergeven en als de taakdeadline al is verstreken, voeg dan het woord VERLOPEN toe aan de taakbeschrijving!

Klinkt interessant. Hoewel we nog geen complexe voorwaarden hebben geleerd, laten we de taak een beetje vereenvoudigen. Laten we gewoon een query schrijven die een lijst met taken uit het verleden weergeeft, maar vergeet niet het woord "VERLOPEN!" aan de titel toe te voegen. .

Om dit te doen, zullen we de CONCAT-functie moeten gebruiken:

   SELECT CONCAT( 'EXPIRED! ', name) FROM task 
   WHERE deadline < CURDATE() 

Het resultaat van deze query zal zijn:

concat('VERLOPEN! ', naam)
VERLOPEN! Los een bug op de frontend op

Aanbeveling. Als u de gegevens alleen naar een iets andere vorm wilt converteren, dan kan dit ook op Java-codeniveau. Maar als je SQL server-side stringfuncties wilt gebruiken (in WHERE), dan kun je absoluut niet zonder.