ugrás a tartalomhoz

MySql TAG eltávolítás

simisoma · 2021. Már. 29. (H), 08.37
Sziasztok,

hogyan tudnám egy MySql karakterláncból eltávolítani az alábbi TAG-et:

Karakterlánc: Ez egy szöveg <TAG ID='1121'> el szeretném távolítani ezt a szakaszt</TAG> és itt folytatódik......

Így szeretném, hogy kinézzen: Ez egy szöveg és itt folytatódik......

Köszi: SimiSoma
 
1

Nem sok részletet adtál meg,

kuka · 2021. Már. 29. (H), 10.07
Nem sok részletet adtál meg, úgyhogy ezt a valamennyire rugalmas megoldást ajánlanám:
regexp_replace(karakterlanc, '<([[:alpha:]]+).*?>.*?</\\1>', '')
  • „TAG” helyett lehet más betűkből álló név
  • „ID='1121'” helyett lehet(nek) más attribútum(ok) vagy semmi
  • „el szeretném távolítani ezt a szakaszt” helyett lehet más vagy semmi
  • Több eltávolítandó szakasz is lehet vagy egy sem
2

Kiegészítés

simisoma · 2021. Már. 29. (H), 13.17
Bocsánat, kicsit részletesebben.

- csak a TAG betükből áll.
- csak az ID attribútum van
- a TAG köztes teljes tartalmat törölném
- Viszont a stringben akár több ilyen TAG lehet csak az ID atributtom változik - és egyszerre max 1 ID-TAG ét távolítanám el. Nem egyszerre az egészet.

pl 1121-es id -t törölni akkor

Előtte:

csak egy szöveg ami itt van:
<TAG ID='2232'>szöveg 1</TAG>
<TAG ID='1121'>szöveg 1</TAG>
<TAG ID='2233'>szöveg 1</TAG>
<TAG ID='2234'>szöveg 1</TAG>

Utána:
csak egy szöveg ami itt van:
<TAG ID='2232'>szöveg 1</TAG>
<TAG ID='2233'>szöveg 1</TAG>
<TAG ID='2234'>szöveg 1</TAG>


Bocs, remélem most érthetőbb és pontosabb volt.
3

Akkor kevésbé bonyolult

kuka · 2021. Már. 29. (H), 14.44
Akkor kevésbé bonyolult reguláris kifejezés is megteszi:
regexp_replace(karakterlanc, '<TAG ID=\'1121\'>.*?</TAG>', '')
Megjegyzendő, hogy vannak akik menekülnek a reguláris kifejezéstől mint összeesküvés hívők a műtősmaszktól, merthogy lassú és erőforrás igényes. Ők helyette ezt fogják javasolni:
concat(mid(karakterlanc, 1, locate('<TAG ID=\'1121\'>', karakterlanc) - 1), mid(karaktelanc, locate('</TAG>', karakterlanc, locate('<TAG ID=\'1121\'>', karakterlanc)) + 6))
Lehet, hogy nagy mennyiségben valamivel gyorsabb és kevésbé terheli a szervert, de az én világnézetem szerint nem a szerver az egyetlen akinek a jövőben olvasnia kell azt a képletet, ezért nálam szempont az ember általi olvashatóság is.
4

Ha HTML-ről van szó és egy az

inf · 2021. Már. 29. (H), 16.21
Ha HTML-ről van szó és egy az egyben be akarja szúrni egy HTML oldalba, akkor ez így nagyon nem lesz jó. Egyesével kellene feldolgozni a nyitó és záró részeket helyette és akár több ciklusban törölni őket. Ehhez vagy stored procedure kell, vagy más nyelv. Például ezen csúnyán elhasal a tiéd: link Ha ilyen HTML-t írnak, akkor sokkal egyszerűbb escapelni a "<" és ">" karaktereket, és sima szövegként értelmezni amit beküldtek, már ha a szűrés a cél.