programmera.net -> mysql -> normal     för utskrift      info@programmera.net

Textfunktioner

1. Textfunktioner
2. CHAR()
3. QUOTE()
4. Information om en text
5. Hämta delar av texten
6. Förändra texten
7. Mängder
8. Kryptering

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)