Oracle Database
Manipulacja ciągiem
Szukaj…
Concatenation: Operator || lub funkcja concat ()
Oracle SQL i PL / SQL ||
operator pozwala łączyć 2 lub więcej ciągów razem.
Przykład:
Zakładając następującą tabelę customers
:
id firstname lastname
--- ----------- ----------
1 Thomas Woody
Pytanie:
SELECT firstname || ' ' || lastname || ' is in my database.' as "My Sentence"
FROM customers;
Wynik:
My Sentence
---------------------------------
Thomas Woody is in my database.
Oracle obsługuje również standardową funkcję SQL CONCAT(str1, str2)
:
Przykład:
Pytanie:
SELECT CONCAT(firstname, ' is in my database.') from customers;
Wynik:
Expr1
---------------------------------
Thomas is in my database.
GÓRNY
Funkcja GÓRNA pozwala na konwersję wszystkich małych liter w ciągu na wielkie.
SELECT UPPER('My text 123!') AS result FROM dual;
Wynik:
RESULT
------------
MY TEXT 123!
INITCAP
Funkcja INITCAP
konwertuje wielkość liter tak, aby każde słowo zaczynało się od dużej litery, a wszystkie kolejne litery były pisane małymi literami.
SELECT INITCAP('HELLO mr macdonald!') AS NEW FROM dual;
Wynik
NEW
-------------------
Hello Mr Macdonald!
NIŻSZY
LOWER konwertuje wszystkie wielkie litery w ciągu na małe litery.
SELECT LOWER('HELLO World123!') text FROM dual;
Wyjścia:
tekst |
---|
cześć world123! |
Wyrażenie regularne
Powiedzmy, że chcemy zastąpić tylko cyfry 2 cyframi: wyrażenie regularne znajdzie je za pomocą (\d\d)
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '(\d\d)', '#')
FROM dual;
Prowadzi do:
'2, 5, and # are numbers in this example'
Jeśli chcę zamienić części tekstu, używam \1
, \2
, \3
aby wywołać dopasowane ciągi znaków:
SELECT REGEXP_REPLACE ('swap around 10 in that one ', '(.*)(\d\d )(.*)', '\3\2\1\3')
FROM dual;
SUBSTR
SUBSTR
pobiera część ciągu, wskazując pozycję początkową i liczbę znaków do wyodrębnienia
SELECT SUBSTR('abcdefg',2,3) FROM DUAL;
zwroty:
bcd
Aby policzyć od końca łańcucha, SUBSTR
przyjmuje liczbę ujemną jako drugi parametr, np
SELECT SUBSTR('abcdefg',-4,2) FROM DUAL;
zwroty:
de
Aby uzyskać ostatni znak w ciągu: SUBSTR(mystring,-1,1)
LTRIM / RTRIM
LTRIM
i RTRIM
usuwają znaki odpowiednio z początku lub końca łańcucha. Może zostać dostarczony zestaw jednego lub więcej znaków (domyślnie jest to spacja) do usunięcia.
Na przykład,
select LTRIM('<===>HELLO<===>', '=<>')
,RTRIM('<===>HELLO<===>', '=<>')
from dual;
Zwroty:
HELLO<===>
<===>HELLO