0
信息:我使用的Oracle 11gORACLE SQL:最短查詢,除去最後一組支架的
比方說這是樣本數據:
Lemon(USD4)(RM16)(SG8)
Melon(RM40)(SG20)(USD10)(EU5)
Orange(USD7)(RM28)
Apple(USD2)
Grape
我想替換最後一個支架組(如果任何)以產生:
Lemon(USD4)(RM16)
Melon(RM40)(SG20)(USD10)
Orange(USD7)
Apple
Grape
這是我的兩個SQL中這似乎太長:
SELECT
CASE
WHEN REGEXP_COUNT(FOOD, '\(') = 0 THEN FOOD
ELSE SUBSTR(FOOD, 1, INSTR(FOOD, '(', -1)-1)
END
FROM TABLE_A;
SELECT
DECODE(
REGEXP_COUNT(FOOD, '\('), 0,
FOOD,
SUBSTR(FOOD, 1, INSTR(FOOD, '(', -1)-1)
)
FROM TABLE_A;
我尋求短。大概是這樣的:
SELECT REGEXP_REPLACE(FOOD, '\(what_is_here\)', '', 1, 2) FROM TABLE_A;
太謝謝你了!它按預期工作。這很難理解。 「\(」緊隨括號後面的數字,我認爲必須有。*在開始和結束括號之間 – Coisox
再次閱讀後,我發現你使用[^ \]] *而不是*。 – Coisox