|
|
Textfunktioner i Oracle
Kommando | | Exempel | | Beskrivning |
ASCII | | ASCII('_') | | Returnerar det numeriska värdet för ett visst tecken. |
CHR | | CHR(95) | | Returnerar en sträng innehållande det tecken som motsvarar nummer 95. |
INSTR | | INSTR('abchejd','hej') | | Hittar första positionen av en sträng i en annan sträng. |
INSTR | | INSTR('axxxxaxx','a', -1) | | Hittar sista positionen av en sträng i en annan sträng. |
LENGTH | | LENGTH('abc') | | Beräknar längden på en sträng. |
SUBSTR | | SUBSTR('abcdefghijk',2,3) | | Returnerar en del av en sträng. |
REPLACE | | REPLACE('abcd','bc','xxx') | | Ersätter 'bc' med 'xxx' i 'abcd'. |
SOUNDEX | | SOUNDEX('sea') | | Returnerar uttalskoden för en sträng. |
LOWER | | LOWER('Hej') | | Returnerar strängen konverterad till gemener. |
UPPER | | UPPER('Hej') | | Returnerar strängen konverterad till VERSALER. |
INITCAP | | INITCAP('hej alla glada') | | Returnerar strängen med första bokstaven i varje ord konverterad till VERSAL. |
TRIM | | TRIM('%' FROM '% hej ') | | Tar bort procent från början och slutet av strängen. |
LTRIM | | LTRIM(' hej ') | | Tar bort blanktecken från början av strängen. |
RTRIM | | RTRIM(' hej ') | | Tar bort blanktecken från slutet av strängen. |
LPAD | | LPAD('hej',20) | | Gör strängen 20 tecken lång och lägger på blanktecken (default) till vänster om det fattas tecken. |
RPAD | | RPAD('hej',20,'=-') | | Gör strängen 20 tecken lång och lägger på =- till höger om det fattas tecken. |
CONCAT | | CONCAT('sea','monster') | | Klistrar ihop två strängar. |
|
På denna sida går vi igenom de olika metoder som finns för att behandla text.
ASCII
Med kommandot ASCII kan du få den numeriska motsvarigheten på ett tecken.
SQL> SELECT ASCII('_') FROM dual;
ASCII('_')
----------
95
|
CHR
Med kommandot CHR kan man omvandla ett numeriskt ASCII-värde till ett tecken:
SQL> SELECT CHR(95) FROM dual;
C
-
_
|
INSTR
Med INSTR kan man hitta första positionen av en delsträng i en annan sträng. Om delsträngen inte finns returneras 0:
SQL> SELECT INSTR('abchejd','hej') FROM DUAL;
INSTR('ABCHEJD','HEJ')
----------------------
4
SQL> SELECT INSTR('abcdef','Z') FROM dual;
INSTR('ABCDEF','Z')
-------------------
0
|
Man kan även ange vilken position där funktionen ska börja leta:
SQL> SELECT INSTR('axxxaxxxxa','a',2) FROM dual;
INSTR('AXXXAXXXXA','A',2)
-------------------------
5
|
I detta fall börjar vi leta vid position 2.
INSTR
Genom att använda ett negativt tal som poistion kan man få INSTR att leta baklänges genom strängen. Med -1 kan man hitta sista positionen av en delsträng i en sträng:
SQL> SELECT INSTR('axxxxaxx','a',-1) FROM dual;
INSTR('AXXXXAXX','A',-1)
------------------------
6
|
LENGTH
Med LENGTH beräknar du antal tecken i en sträng. Man kan även beräkna antal siffror i ett tal:
SQL> SELECT LENGTH('abc') FROM dual;
LENGTH('ABC')
-------------
3
SQL> SELECT LENGTH(111.11) FROM dual;
LENGTH(111.11)
--------------
6
SQL> SELECT LENGTH(abcde) FROM dual;
SELECT LENGTH(abcde) FROM dual
*
Fel pÕ rad 1:
ORA-00904: "ABCDE": ogiltig identifierare
|
Som vi såg av det sista exemplet måste vi få ett tal eller en sträng som invärde, allt annat tolkas som identifierare.
SUBSTR
Med SUBSTR kan man klippa ut en del av en sträng:
SQL> SELECT SUBSTR('abcdefghijk',2,3) FROM dual;
SUB
---
bcd
|
Genom att använda ett negativt tal som position kan man klippa från slutet:
SQL> SELECT SUBSTR('abcdefghijk',-2,3) FROM dual;
SU
--
jk
|
Här börjar vi räkna från position -2 och då finns det ju bara 2 tecken att få..
REPLACE
Med REPLACE kan man ersätta delar av strängen:
SQL> SELECT REPLACE('abcd','bc','xxx') FROM dual;
REPLA
-----
axxxd
|
SOUNDEX
Med kommandot SOUNDEX kan man jämföra uttal av två strängar, och se om de ligger nära varandra i uttal:
SQL> SELECT SOUNDEX('so') FROM dual;
SOUN
----
S000
SQL> SELECT SOUNDEX('xo') FROM dual;
SOUN
----
X000
|
LOWER
Med kommandot LOWER kan man konvertera en sträng till gemener:
SQL> SELECT LOWER('Hej') FROM dual;
LOW
---
hej
|
UPPER
Med kommandot UPPER kan man konvertera en sträng till VERSALER:
SQL> SELECT UPPER('Hej') FROM dual;
UPP
---
HEJ
|
INITCAP
Med kommandot INITCAP kan man konvertera första bokstaven i varje ord till VERSAL:
SQL> SELECT INITCAP('hej alla glada') FROM dual;
INITCAP('HEJAL
--------------
Hej Alla Glada
|
TRIM
Med TRIM kan man ta bort inledande och avslutande tecken från en sträng.Per default tas blanktecken bort, men vilka tecken som helst kan tas bort. Syntaxen för TRIM ser ut såhär:
TRIM([[LEADING|TRAILING|BOTH] ['char'] FROM] 'string')
|
Till exempel:
SQL> SELECT TRIM(' hej ') FROM dual;
TRI
---
hej
SQL> SELECT TRIM(TRAILING FROM ' hej ') FROM dual;
TRIM(
-----
hej
SQL> SELECT TRIM('%' FROM '% hej ') FROM dual;
TRIM('%'
--------
hej
|
LTRIM
Med LTRIM kan man ta bort tecken från början av strängen. Per default tas blanktecken bort:
SQL> SELECT LTRIM(' hej ') FROM dual;
LTRIM(
------
hej
SQL> SELECT LTRIM(' hej ',' h') FROM dual;
LTRIM
-----
ej
|
I sista exemplet tas alla blanktecken och alla h-tecken bort från början av strängen, oavsett hur de blandas.
RTRIM
Med RTRIM kan man ta bort tecken från slutet av strängen. Per default tas blanktecken bort:
SQL> SELECT RTRIM(' hej ') FROM dual;
RTRIM
-----
hej
SQL> SELECT RTRIM(' hej ',' j') FROM dual;
RTRI
----
he
|
I sista exemplet tas alla blanktecken och alla j-tecken bort från slutet av strängen, oavsett hur de blandas.
LPAD
Med LPAD kan man göra en sträng till fix längd. Om strängen är längre än den fixa längden klipps den av, om den är kortare fylls den ut med blanktecken (per default) till vänster.
SQL> SELECT LPAD('hej',20) FROM dual;
LPAD('HEJ',20)
--------------------
hej
SQL> SELECT LPAD('hej',20,'x') FROM dual;
LPAD('HEJ',20,'X')
--------------------
xxxxxxxxxxxxxxxxxhej
|
RPAD
Med RPAD kan man göra en sträng till fix längd. Om strängen är längre än den fixa längden klipps den av, om den är kortare fylls den ut med blanktecken (per default) till höger.
SQL> SELECT RPAD('hej',20,'=-') FROM dual;
RPAD('HEJ',20,'=-')
--------------------
hej=-=-=-=-=-=-=-=-=
|
CONCAT
CONCAT(a,b) klistrar ihop sträng a med sträng b. Samma sak som ||-operatorn:
SQL> SELECT concat('sea','monster') FROM dual;
CONCAT('SE
----------
seamonster
|
|
| |
|