Liste over strengfunktioner

Flere funktioner end dato og klokkeslæt - kun String-typen. Hvilket i SQL er givet af CHAR(n) og VARCHAR(n) typer. Lad os huske de mest populære af dem:

Fungere Beskrivelse
1 LENGTH(str) Returnerer længden af ​​den beståede streng i bytes
2 CHAR_LENGTH(str) Returnerer længden af ​​den beståede streng i tegn
3 LOCATE(substr;str), Søger efter en understreng i en streng, der ligner metoden indexOf().
4 LOCATE(substr;str;pos) Søger efter en understreng i en streng, der starter ved pos
5 KONCAT(str1,str2,...) Sammenkæder flere linjer
6 SUBSTR(), SUBSTRING() Returnerer en understreng givet af et interval af tegn
7 LAVERE(str) Konverterer en streng til små bogstaver
8 ØVRE(str) Konverterer en streng til store bogstaver
9 ERSTATTE() Erstatter en understreng i en streng
10 MATCH() Kontrollerer, om en streng matcher et givet mønster
elleve TRIM(str) Trimmer tomme tegn i begyndelsen og slutningen af ​​en streng
12 LTRIM(str) Trimmer tomme tegn i begyndelsen af ​​en streng
13 RTRIM(str) Trimmer tomme tegn i slutningen af ​​en streng
14 TO_BASE64(str) Konverterer en streng til Base64
15 FROM_BASE64(str) Konverterer en streng fra Base64

Jeg grupperede bevidst funktionerne i små grupper for at gøre det lettere at forstå, hvordan man arbejder med dem. Nedenfor vil vi overveje en funktion fra hver gruppe. Du kan finde en komplet liste over funktioner til at arbejde med strenge i den officielle dokumentation .

Lad os konvertere strengen

Lad os først beskæftige os med de enkleste funktioner, der blot konverterer en streng til en lidt anden form. Konverter for eksempel en streng til store og små bogstaver. Generelt ligner deres adfærd de samme funktioner i Java-sproget.

Så jeg vil lige give en tabel med et par eksempler.

# Anmodning Resultat
1 VÆLG LÆNGDE ('tekst') 4
2 VÆLG LÆNGDE ('Hej') 12
3 VÆLG NEDRE ('Hej') Hej
4 VÆLG ØVRE ('Hej') HEJ
5 VÆLG SUBSTR ('Hej', 2, 3) riv
6 SELECT SUBSTR ('Hej, hvordan har du det?', 8) Hvordan har du det?

Funktionerne fungerer som forventet, ligesom deres modstykker fra JDK.

Den eneste advarsel: i den første linje er resultatet 4, ikke 8. Sagen er, at 1 byte (ASCII-kodning) bruges i anmodningen om at kode latinske tegn. Men hvis du arbejder med data fra databasen, vil længden af ​​strengen afhænge af databasens kodningsindstillinger . Du vil finde mange overraskelser, mens du arbejder med databasen :)

Komplekse handlinger med strenge

Nå, lad os se på mere komplekse ting, når vi arbejder med strenge. Hvad ville du finde på...

Lad os vise opgaver fra opgavetabellen, og hvis opgavefristen allerede er overskredet, så tilføj ordet UDLØB til opgavebeskrivelsen!

Lyder interessant. Selvom vi endnu ikke har lært komplekse forhold, så lad os forenkle opgaven lidt. Lad os bare skrive en forespørgsel, der viser en liste over tidligere opgaver, men sørg for at tilføje ordet "UDLØB!" til titlen. .

For at gøre dette skal vi bruge CONCAT-funktionen:

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

Resultatet af denne forespørgsel vil være:

concat('UDLØB! ', navn)
UDLØB! Ret en fejl på frontend

Henstilling. Skal du blot konvertere dataene til en lidt anden form, så kan dette også gøres på Java-kodeniveau. Men hvis du vil bruge SQL server-side string-funktioner (inde i WHERE), så kan du bestemt ikke undvære dem.