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.