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.