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.
Fungerar som MySQL är konfigurerad med SSL.
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)
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:
Nedan demonstreras hur SUBSTRING() och liknande funktioner används:
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)
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():
INSERT() klistrar in en text i en annan:
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)
LPAD() och RPAD() fungerar såhär:
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)
LOWER() och UPPER() 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)
Ett exempel på REVERSE():
mysql> SELECT LOWER("HeJ"), UPPER("HeJ");
+--------------+--------------+
| LOWER("HeJ") | UPPER("HeJ") |
+--------------+--------------+
| hej | HEJ |
+--------------+--------------+
1 row in set (0.00 sec)
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:
Nedan ges ett exempel på MD5():
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)
mysql> SELECT MD5("hej");
+----------------------------------+
| MD5("hej") |
+----------------------------------+
| 541c57960bb997942655d14e3b9607f9 |
+----------------------------------+
1 row in set (0.00 sec)