Lista över strängfunktioner

Fler funktioner än datum och tid - bara String-typen. Vilket i SQL ges av CHAR(n) och VARCHAR(n) typer. Låt oss komma ihåg de mest populära av dem:

Fungera Beskrivning
1 LENGTH(str) Returnerar längden på den skickade strängen i byte
2 CHAR_LENGTH(str) Returnerar längden på den passerade strängen i tecken
3 LOCATE(substr,str), Söker efter en delsträng i en sträng som liknar metoden indexOf().
4 LOCATE(substr;str;pos) Söker efter en delsträng i en sträng som börjar vid pos
5 KONCAT(str1,str2,...) Sammanfogar flera rader
6 SUBSTR(), SUBSTRING() Returnerar en delsträng som ges av ett teckenintervall
7 LOWER(str) Konverterar en sträng till gemener
8 ÖVRE(str) Konverterar en sträng till versaler
9 BYTA UT() Ersätter en delsträng i en sträng
10 MATCH() Kontrollerar om en sträng matchar ett givet mönster
elva TRIM(str) Trimmer tomma tecken i början och slutet av en sträng
12 LTRIM(str) Trimmer tomma tecken i början av en sträng
13 RTRIM(str) Trimmer tomma tecken i slutet av en sträng
14 TO_BASE64(str) Konverterar en sträng till Base64
15 FROM_BASE64(str) Konverterar en sträng från Base64

Jag grupperade medvetet funktionerna i små grupper för att göra det lättare att förstå hur man arbetar med dem. Nedan kommer vi att behandla en funktion från varje grupp. Du kan hitta en komplett lista över funktioner för att arbeta med strängar i den officiella dokumentationen .

Låt oss konvertera strängen

Låt oss först ta itu med de enklaste funktionerna som helt enkelt konverterar en sträng till en något annorlunda form. Konvertera till exempel en sträng till versaler och gemener. I allmänhet liknar deras beteende samma funktioner i Java-språket.

Så jag ska bara ge en tabell med några exempel.

# Begäran Resultat
1 VÄLJ LÄNGD ('text') 4
2 VÄLJ LÄNGD ('Hej') 12
3 VÄLJ NEDRE ('Hej') Hallå
4 VÄLJ ÖVRE ('Hej') HALLÅ
5 VÄLJ SUBSTR ('Hej', 2, 3) riv
6 SELECT SUBSTR ('Hej, hur mår du?', 8) Hur mår du?

Funktionerna fungerar som förväntat, precis som deras motsvarigheter från JDK.

Den enda varningen: på den första raden är resultatet 4, inte 8. Saken är att 1 byte (ASCII-kodning) används i begäran om att koda latinska tecken. Men om du arbetar med data från databasen kommer längden på strängen att bero på databaskodningsinställningarna . Du kommer att hitta många överraskningar när du arbetar med databasen :)

Komplexa åtgärder med strängar

Tja, låt oss titta på mer komplexa saker när vi arbetar med strängar. Vad skulle du hitta på...

Låt oss visa uppgifter från uppgiftstabellen, och om uppgiftens deadline redan har passerat, lägg sedan till ordet EXPIRED i uppgiftsbeskrivningen!

Låter intressant. Även om vi ännu inte har lärt oss komplexa förhållanden, så låt oss förenkla uppgiften lite. Låt oss bara skriva en fråga som visar en lista över tidigare uppgifter, men var noga med att lägga till ordet "EXPIRED!" till titeln. .

För att göra detta måste vi använda CONCAT-funktionen:

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

Resultatet av denna fråga blir:

concat('EXPIRED! ', namn)
UTGÅNGET! Fixa en bugg på frontend

Rekommendation. Om du bara behöver konvertera data till en lite annan form, så kan detta även göras på Java-kodnivå. Men om du vill använda SQL server-side strängfunktioner (inuti WHERE), så kan du definitivt inte klara dig utan dem.