Liste over strengfunksjoner

Flere funksjoner enn dato og klokkeslett - bare strengtypen. Som i SQL er gitt av CHAR(n) og VARCHAR(n) typer. La oss huske de mest populære av dem:

Funksjon Beskrivelse
1 LENGTH(str) Returnerer lengden på den passerte strengen i byte
2 CHAR_LENGTH(str) Returnerer lengden på den passerte strengen i tegn
3 LOCATE(substr;str), Søker etter en understreng i en streng som ligner på indexOf()-metoden
4 LOCATE(substr;str;pos) Søker etter en understreng i en streng som starter ved pos
5 KONCAT(str1,str2,...) Slår sammen flere linjer
6 SUBSTR(), SUBSTRING() Returnerer en delstreng gitt av en rekke tegn
7 LOWER(str) Konverterer en streng til små bokstaver
8 ØVRE(str) Konverterer en streng til store bokstaver
9 ERSTATTE() Erstatter en understreng i en streng
10 KAMP() Sjekker om en streng samsvarer med et gitt mønster
elleve TRIM(str) Trimmer tomme tegn på begynnelsen og slutten av en streng
12 LTRIM(str) Trimmer tomme tegn i begynnelsen av en streng
1. 3 RTRIM(str) Trimmer tomme tegn på slutten av en streng
14 TO_BASE64(str) Konverterer en streng til Base64
15 FROM_BASE64(str) Konverterer en streng fra Base64

Jeg har bevisst gruppert funksjonene i små grupper for å gjøre det lettere å forstå hvordan man jobber med dem. Nedenfor vil vi vurdere én funksjon fra hver gruppe. Du kan finne en fullstendig liste over funksjoner for arbeid med strenger i den offisielle dokumentasjonen .

La oss konvertere strengen

La oss først ta for oss de enkleste funksjonene som ganske enkelt konverterer en streng til en litt annen form. Konverter for eksempel en streng til store og små bokstaver. Generelt ligner deres oppførsel på de samme funksjonene i Java-språket.

Så jeg skal bare gi en tabell med noen få eksempler.

# Be om Resultat
1 VELG LENGDE ('tekst') 4
2 VELG LENGDE ('Hei') 12
3 VELG NEDRE ('Hei') Hallo
4 VELG ØVRE ('Hei') HALLO
5 VELG SUBSTR ('Hei', 2, 3) riv
6 SELECT SUBSTR ('Hei, hvordan har du det?', 8) Hvordan har du det?

Funksjonene fungerer som forventet, akkurat som deres motstykker fra JDK.

Det eneste forbeholdet: i den første linjen er resultatet 4, ikke 8. Saken er at 1 byte (ASCII-koding) brukes i forespørselen om å kode latinske tegn. Men hvis du jobber med data fra databasen, vil lengden på strengen avhenge av innstillingene for databasekoding . Du vil finne mange overraskelser mens du arbeider med databasen :)

Komplekse handlinger med strenger

Vel, la oss se på mer komplekse ting når vi jobber med strenger. Hva ville du funnet på...

La oss vise oppgaver fra oppgavetabellen, og hvis oppgavefristen allerede har gått ut, så legg til ordet UTLØPT i oppgavebeskrivelsen!

Høres interessant ut. Selv om vi ennå ikke har lært komplekse forhold, så la oss forenkle oppgaven litt. La oss bare skrive en spørring som viser en liste over tidligere oppgaver, men sørg for å legge til ordet "UTLØPT!" i tittelen. .

For å gjøre dette, må vi bruke CONCAT-funksjonen:

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

Resultatet av denne spørringen vil være:

concat('UTLØPT! ', navn)
UTLØPT! Rett opp en feil på frontend

Anbefaling. Hvis du bare trenger å konvertere dataene til en litt annen form, kan dette også gjøres på Java-kodenivå. Men hvis du vil bruke SQL-server-side strengfunksjoner (inne i WHERE), så kan du definitivt ikke klare deg uten dem.