I have a table in oracle apex:
CREATE TABLE Fundusze (
Id NUMBER(10) NOT NULL,
Nazwa VARCHAR2(50) NOT NULL,
Waluta VARCHAR2(50) NOT NULL,
Typ VARCHAR2(50) NOT NULL,
CONSTRAINT CHK_StatusFundusze CHECK (Typ IN ('defensywny', 'akcyjny', 'oszczędnościowy')),
CONSTRAINT PK_IdFundusze PRIMARY KEY (Id)
);
INSERT INTO Fundusze VALUES (1, 'Def1', 'PLN', 'defensywny');
INSERT INTO Fundusze VALUES (2, 'Def2', 'USD', 'defensywny');
INSERT INTO Fundusze VALUES (3, 'Akc1', 'PLN', 'akcyjny');
INSERT INTO Fundusze VALUES (4, 'Akc2', 'USD', 'akcyjny');
INSERT INTO Fundusze VALUES (5, 'Os1', 'PLN', 'oszczędnościowy');
INSERT INTO Fundusze VALUES (6, 'Os2', 'USD', 'oszczędnościowy');
INSERT INTO Fundusze VALUES (7, 'Defensywny2', 'PLN', 'defensywny');
INSERT INTO Fundusze VALUES (8, 'Akcyjny2', 'PLN', 'akcyjny');
INSERT INTO Fundusze VALUES (9, ' Akc3yjny3', 'PLN', 'akcyjny');
INSERT INTO Fundusze VALUES (10, 'Akc4yjny4 ', 'PLN', 'akcyjny');
INSERT INTO Fundusze VALUES (11, ' Akc5yjny5 ', 'PLN', 'akcyjny');
INSERT INTO Fundusze VALUES (12, ' top20', 'PLN', 'defensywny');
INSERT INTO Fundusze VALUES (13, 'low30 ', 'PLN', 'defensywny');
INSERT INTO Fundusze VALUES (14, ' mid40 ', 'PLN', 'defensywny');
I want to make an update on this table values so that the nazwa is trimmed out of spaces, then add a string after the nazwa "MBANK" and then make everything into capital letters. I used the following query
UPDATE Fundusze
SET nazwa = TRIM(UPPER(SUBSTR(nazwa, 0, 4))) || 'MBANK');
but it takes the spaces into the removal and doesn't substring properly, which is what I want. For example last three rows are returned into this:
12 TOPMBANK
13 LOW3MBANK
14 MIDMBANK
and I want it to be:
12 TOP2MBANK
13 LOW3MBANK
14 MID4MBANK
I tried everything, but failed to do it the way needed.
Trim before taking the sub-string:
UPDATE Fundusze
SET nazwa = UPPER(SUBSTR(TRIM(nazwa), 1, 4)) || 'MBANK';
Which, for some minimal example data:
CREATE TABLE Fundusze (
Id NUMBER(10) NOT NULL,
Nazwa VARCHAR2(50) NOT NULL
);
INSERT INTO Fundusze VALUES (1, 'Def1');
INSERT INTO Fundusze VALUES (7, 'Defensywny2');
INSERT INTO Fundusze VALUES (9, ' Akc3yjny3');
INSERT INTO Fundusze VALUES (10, 'Akc4yjny4 ');
INSERT INTO Fundusze VALUES (11, ' Akc5yjny5 ');
INSERT INTO Fundusze VALUES (12, ' top20');
INSERT INTO Fundusze VALUES (13, 'low30 ');
INSERT INTO Fundusze VALUES (14, ' mid40 ');
Updates the table to:
ID | NAZWA |
---|---|
1 | DEF1MBANK |
7 | DEFEMBANK |
9 | AKC3MBANK |
10 | AKC4MBANK |
11 | AKC5MBANK |
12 | TOP2MBANK |
13 | LOW3MBANK |
14 | MID4MBANK |