1. Textfunktioner
På denna sida beskrivs hur man med MySQL kan manipulera texter.
2. CHAR()
CHAR() konverterar ett tal till dess motsvarande ASCII-tecken:
mysql> SELECT CHAR(56), CHAR(122);
+----------+-----------+
| CHAR(56) | CHAR(122) |
+----------+-----------+
| 8 | z |
+----------+-----------+
1 row in set (0.00 sec)
|
3. QUOTE()
QUOTE() används för att förändra en sträng så den på ett säkert sätt kan användas i en SQL-sats. Strängen sätts inom enkla citationstecken och tecken som bedöms som probelmatiska (',\,ASCI NUL och Ctrl-Z) görs ofarliga:
mysql> SELECT QUOTE("hej'hej");
+------------------+
| QUOTE("hej'hej") |
+------------------+
| 'hej\'hej' |
+------------------+
1 row in set (0.00 sec)
|
4. Information om en text
För att få information om en text kan man lita till följande funktioner:
Funktion | | Beskrivning |
LENGTH(str) | | Returnerar textens längd i antal bytes. |
CHAR_LENGTH(str) | | Returnerar textens längd i antal tecken. |
POSITION(substr, str) | | Returnerar positionen av substr i str. |
För svensk och engelsk text är LENGTH()=CHAR_LENGTH() eftersom teckentypen Latin-1 använder en byte för varje tecken.
mysql> SELECT LENGTH("Hej så mycket"), CHAR_LENGTH("Hej så mycket");
+-------------------------+------------------------------+
| LENGTH("Hej så mycket") | CHAR_LENGTH("Hej så mycket") |
+-------------------------+------------------------------+
| 13 | 13 |
+-------------------------+------------------------------+
1 row in set (0.00 sec)
|
Fungerar som MySQL är konfigurerad med SSL.
5. Hämta delar av texten
Med funktionerna nedan kan du förändra en text:
Funktion | | Beskrivning |
LTRIM(str) | | Tar bort eventuella mellanslag från vänster. |
RTRIM(str) | | Tar bort eventuella mellanslag från höger. |
TRIM(str) | | Tar bort eventuella mellanslag från höger och vänster. |
SUBSTR(str, pos, len) | | Hämtar en del av str. |
LEFT(str,len) | | Hämtar len tecken från vänster i str. |
RIGHT(str,len) | | Hämtar len tecken från höger i str. |
Nedan visas hur man kan "trimma" en sträng från mellanslag:
mysql> SELECT LENGTH(LTRIM(" hej ")), LENGTH(RTRIM(" hej ")), LENGTH(TRIM(" hej "));
+-------------------------+-------------------------+------------------------+
| LENGTH(LTRIM(" hej ")) | LENGTH(RTRIM(" hej ")) | LENGTH(TRIM(" hej ")) |
+-------------------------+-------------------------+------------------------+
| 5 | 4 | 3 |
+-------------------------+-------------------------+------------------------+
1 row in set (0.00 sec)
|
Nedan demonstreras hur SUBSTRING() och liknande funktioner används:
mysql> SELECT SUBSTRING("abcdefg",2,3), LEFT("abcdefg",3), RIGHT("abcdefg",3);
+--------------------------+-------------------+--------------------+
| SUBSTRING("abcdefg",2,3) | LEFT("abcdefg",3) | RIGHT("abcdefg",3) |
+--------------------------+-------------------+--------------------+
| bcd | abc | efg |
+--------------------------+-------------------+--------------------+
1 row in set (0.00 sec)
|
6. Förändra texten
Med funktionerna nedan kan du förändra en text:
Funktion | | Beskrivning |
CONCAT(str1, str2, ..) | | Returnerar sammanslagningen av alla strängarna. |
CONCAT_WS(sep, str1, str2, ..) | | (Concat With Separator) Slår ihop strängarna med en separator emellan. |
INSERT(str,pos,len,newstr) | | Denna funktion raderar len tecken från position pos i str, sedan klistras newstr in vid pos. |
LPAD(str,len,pad) | | Formatterar strängen till längden len och eventuellt adderar pad till vänster om strängen. |
RPAD(str,len,pad) | | Formatterar strängen till längden len och eventuellt Adderar pad till höger om strängen. |
LOWER(str) | | Returnerar str konverterad till små bokstäver. |
UPPER(str) | | Returnerar str konverterad till STORA bokstäver. |
REVERSE(str) | | Vänder en sträng baklänges. |
Nedan ges ett exempel på CONCAT() och CONCAT_WS():
mysql> SELECT CONCAT("Hej","på","dig"), CONCAT_WS(" ","Hej","på","dig");
+--------------------------+---------------------------------+
| CONCAT("Hej","på","dig") | CONCAT_WS(" ","Hej","på","dig") |
+--------------------------+---------------------------------+
| Hejpådig | Hej på dig |
+--------------------------+---------------------------------+
1 row in set (0.00 sec)
|
INSERT() klistrar in en text i en annan:
mysql> SELECT INSERT("1234567890",2,6,"abc"), INSERT("1234567890",5,0,"abc");
+--------------------------------+--------------------------------+
| INSERT("1234567890",2,6,"abc") | INSERT("1234567890",5,0,"abc") |
+--------------------------------+--------------------------------+
| 1abc890 | 1234abc567890 |
+--------------------------------+--------------------------------+
1 row in set (0.00 sec)
|
LPAD() och RPAD() fungerar såhär:
mysql> SELECT LPAD("hej",6,"_"), RPAD("hej",7,"_-");
+-------------------+--------------------+
| LPAD("hej",6,"_") | RPAD("hej",7,"_-") |
+-------------------+--------------------+
| ___hej | hej_-_- |
+-------------------+--------------------+
1 row in set (0.00 sec)
|
LOWER() och UPPER() fungerar såhär:
mysql> SELECT LOWER("HeJ"), UPPER("HeJ");
+--------------+--------------+
| LOWER("HeJ") | UPPER("HeJ") |
+--------------+--------------+
| hej | HEJ |
+--------------+--------------+
1 row in set (0.00 sec)
|
Ett exempel på REVERSE():
mysql> SELECT REVERSE("hej");
+----------------+
| REVERSE("hej") |
+----------------+
| jeh |
+----------------+
1 row in set (0.00 sec)
|
7. Mängder
Funktionerna nedan handlar om en mängd av strängar:
Funktion | | Beskrivning |
ELT(nr, str1, str2, ..) | | Returnerar str1 om nr=1, str2 om nr=2 osv. |
FIELD(str, str1, str2, ..) | | Returnerar 1 om str=str1, 2 om str=str2 osv. |
FIND_IN_SET(str, str_set) | | Returnerar positionen av str i str_set, där varje del av str_set åtskiljs av ett komma. |
Nedan ges ett exempel på hur FIELD() och FIND_IN_SET() används:
mysql> SELECT FIND_IN_SET("foo", "hej,nej,jo,foo,sen,du"), FIELD("foo","hej","nej","jo","foo","sen","du");
+---------------------------------------------+------------------------------------------------+
| FIND_IN_SET("foo", "hej,nej,jo,foo,sen,du") | FIELD("foo","hej","nej","jo","foo","sen","du") |
+---------------------------------------------+------------------------------------------------+
| 4 | 4 |
+---------------------------------------------+------------------------------------------------+
1 row in set (0.00 sec)
|
8. Kryptering
Med funktionerna nedan kan du kryptera strängar:
Funktion | | Beskrivning |
ENCODE(str, key) | | Returnerar en sträng av samma längd som str men krypterad med nyckeln key. Kan dekrypteras med DECODE(crypt_str,key) |
DECODE(crypt_str, key) | | Returnerar orginalsträngen str utifrån crypt_str om str krypterades med ENCODE(str,key). |
DES_ENCRYPT(str [, key]) | | Krypterar med triple-DES algoritmen. Fungerar som MySQL är konfigurerad med SSL. |
DES_DECRYPT(str [, key]) | | Avkrypterar något som krypterats med DES_ENCRYPT(). Fungerar som MySQL är konfigurerad med SSL. |
MD5(str) | | Returnerar str som MD5. |
Nedan ges ett exempel på hur ENCODE()/DECODE() fungerar:
mysql> SELECT ENCODE("hej","abc");
+---------------------+
| ENCODE("hej","abc") |
+---------------------+
| f[Ù |
+---------------------+
1 row in set (0.00 sec)
SELECT DECODE(ENCODE("hej","abc"),"abc");
+-----------------------------------+
| DECODE(ENCODE("hej","abc"),"abc") |
+-----------------------------------+
| hej |
+-----------------------------------+
1 row in set (0.00 sec)
|
Nedan ges ett exempel på MD5():
mysql> SELECT MD5("hej");
+----------------------------------+
| MD5("hej") |
+----------------------------------+
| 541c57960bb997942655d14e3b9607f9 |
+----------------------------------+
1 row in set (0.00 sec)
|