Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLSQL] - Bestimmte Zeichen in einem Datensatz ersetzen?!

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

zuerst möchte ich nur erwähnen, dass ich völliger Neueinsteiger in Sachen PL/SQL bin und mich gerade mit einfachen SQL-Statements befasse und daher nur beschränkt auskenne.

Folgendes Problem:

Wir haben im Unternehmen zwei Oracle-Datenbanken, einmal eine Test-Datenbank (TEST) und eine Produktiv-Datenbank (PROD). In gewissen Zeitabständen wird die PROD-Db auf die TEST-Db kopiert.

Alles schön und gut soweit, jedoch haben wir einige Einträge in Tabellen, welche massiv Ärger machen. Dazu wurde ich beauftragt, das per "Update"-Funktion zu beheben.

Generell habe ich keinerlei Probleme mit simplen Update-Befehlen, jedoch ist das für mich nun ein wenig kniffliger.

Beispiel:

E-MailLink

------------------

abc=PRODdef

ghi=PRODjkl

mno=PRODpqr

stu=PRODvwx

Wie bereits erkannt, ist in den Datensätzen der Spalte "E-MailLink" die Zeichenfolge PROD integriert. Das führt auf unserem TEST-System zu massiven Problemen.

Wie muss jetzt der Update-Befehl (ich schätze Replace wird hierfür benötigt?) lauten, um NUR PROD durch TEST zu ersetzen?

Beispiel:

E-MailLink

------------------

abc=TESTdef

ghi=TESTjkl

mno=TESTpqr

stu=TESTvwx

Um jede hilfreiche Antwort wäre ich sehr dankbar! :)

Freundliche Grüße

iceQ7

Vielen Dank erst einmal für die schnelle Antwort!

Ich bräuchte jedoch ein "fertiges" Script, da ich in diesem Fall absolut keine Ahnung habe, wie genau ich REPLACE/SUBSTR setzen muss, um das gewünschte Ergebnis zu erhalten...

Einfach so:


Update deine_tabelle set emaillink=replace (emaillink,'PROD','TEST');

commit;

Fertig. Da brauchst kein PL/SQL.

Dim

PS: Die Spalte heißt nicht wirklich e-maillink (also mit Bindestrich) oder?

schnelle und ganz richtige Antwort :cool:

  • 2 Wochen später...

Erst einmal vielen Dank an dr.dimitri für die schnelle Hilfe!

Ich kann hier nur mit PL/SQL arbeiten, da wir keine anderen Werkzeuge zur Verfügung haben...

Neues Problem für mich:

Wir haben dämlicherweise jede Menge Dubletten in einer bestimmten Tabelle.

Nun sollen aber alle Dubletten dieser Tabelle bis auf einen Datensatz gelöscht werden.

Beispiel:


noteslink    |  lastname

------------------------

abc=PRODdef  |	meier

abc=PRODdef  |	meier

abc=PRODdef  |  meier

abc=PRODdef  |	meier

abc=PRODdef  |	meier

Es ist völlig egal, welcher der 5 Datensätze übrig bleibt, hauptsache einer. Kann man sozusagen eine Spalte mit fortlaufenden Zahlen "temporär" hinzufügen? Somit wärs einfacher Datensätze zu löschen...

Hat sonst einer eine brauchbare Idee oder ein brauchbares SQL-Statement für mich?

Vielen Dank

Grüße

iceQ7

....

Wir haben dämlicherweise jede Menge Dubletten in einer bestimmten Tabelle.

Nun sollen aber alle Dubletten dieser Tabelle bis auf einen Datensatz gelöscht werden.

...

Hallo,

Doppelte Datesätze kannst du mit folgender Methode selektieren (Das Attribut "Name" soll hier geprüft werden) :



SELECT name

  FROM Test a

 WHERE ROWID <> (SELECT MAX (ROWID)

                   FROM Test b

                  WHERE b.name = a.name);


Das Löschen sollte anschliessend kein Problem darstellen...

Grüsse

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.