SQL um bestimmten Buchstaben zu löschen
Hallo zusammen
Ich habe eine Applikation, die Zugriffsrechte über Buchstaben in einem Feld steuert.
Z.B. bedeutet U=Update-Recht, R=Read-Recht, usw.
Nun möchte ich allen Einträgen das Recht L entfernen.
Das Problem dabei ist, dass die Reihenfolge der Buchstaben wild durcheinander sein können; das heisst, folgende Einträge bedeuten dieselbe Berechtigung:
URL
LUR
RLU
ULR
usw.
Nun brauche ich ein SQL-Update script, welches mir alle vorhadenen L's rauslöscht, aber den Rest des Feldes unverändert lässt.
Hat mir jemand von Euch eine Idee, wie das zu lösen ist?
Besten Dank für Eure Hilfe!
Gruss Rolf
Antwort schreiben
Antwort 1 von erik vom 02.04.2019, 15:00 Options
Hallo Rolf,
am besten setzt du die Replace()-Funktion ein, indem du "L" durch nichts ersetzt:
UPDATE MeineTabelle
SET MeineTabelle.MeineRechte = Replace([MeineRechte],"L","");
Ich weiss zwar nicht, warum du das so machen musst, aber datenbanktechnisch gesehen ist das eigentlich Unsinn. Statt Zeichenfolgen zu durchforsten bieten sich für die benötigten Rechte drei Ja/Nein-Spalten an, die jeweils auf Wahr oder Falsch gesetzt werden sollten.
Gruß
erik
Antwort 2 von WORM vom 02.04.2019, 15:54 Options
Hallo Erik
Vielen Dank, hat super funktioniert!
Nun, ich gebe Dir recht, dass es mit 3 Ja/Nein-Spalten einfacher wäre...
Allerdings habe ich keinen Einfluss auf den Programm-Code... das Programm wurde vor Jahren so geschrieben, also kann ich mich nur an die gegebenen Umstände halten :-)
Gruss Rolf
Antwort 3 von erik vom 02.04.2019, 16:01 Options
Hallo Rolf,
sowas wie Erblasten hatte ich schon fast geahnt. Furchtbar. ;-)
Gruß
erik