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

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