Kuidas eemaldada SQL lauses stingi e sõne ümbert sulud, kui string peaks olema sulgudes?

Postitas Erki Eessaar 24.11.2024 14:48 (muudeti 24.11.2024 14:50)
Andmebaasisüsteemid PostgreSQL ja Oracle pakuvad funktsiooni regexp_replace, mis võimaldab asendada stringis alamstringi, kasutades sealjuures regulaaravaldisi. Lause katsetamiseks saab kasutada SQL Fiddle keskkonda.

PostgreSQL (17) ja Oracle 23ai.

WITH sonad (sona) AS (VALUES ('(poolikud sulud'), ('sulgudeta'), ('veel( poolikuid sulge'), ('poolikud sulud)'),('(sulud)'),('()'))
SELECT sona AS algne, regexp_replace(sona,'^\((.*)\)$','\1') AS  teisendatud
FROM sonad;

Funktsioonil regexp_replace on kolm argumenti.
  • Väärtus, kus teha asendus.
  • Regulaaravaldis, mille alusel otsida asendatavat alamstringi.
    • '^\((.*)\)$' - stringi alguses ja lõpus peavad olema sulud. Selleks, et otsida regulaaravaldises sulge, tuleb nende ette panna paomärk \, sest sulgudel on regulaaravaldise mustris eritähendusega märgid. Sulgude vahel on null või rohkem suvalist märki (.*).
  • Alamstringi asendav väärtus.
    • Kogu string asendatakse eelnevas mustris esimestes sulgudes olnud väärtusega (.*) e väärtusega, mis on sulgude sees.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!