Archiv verlassen und diese Seite im Standarddesign anzeigen : per SQLl Strings bearbeiten
MoRtAlAn 15-05-2002, 16:03 in meiner DB (MSSQL) befinden sich Datensätze, die Sonderzeichen, etc enthalten. Gibt es mit SQL eine Möglichkeit, die Dinger zu entfernen ??
Beispiel:
ich habe folgenden Eintrag: => Graphic/Video/special
dann soll er mit per SQL folgendes daraus machen:
GraphicVideospecial
sprich einfach die Sonderzeichen entfernen (nicht nur "/" sondern alle, die ich möchte).
gruss
Troublegum 15-05-2002, 16:07 Du kannst höchstens REPLACE() benutzen (siehe MySQL Docu).
da musst du aber die Zeichen vorgeben, die ersetzt werden sollen.
Und / ist doch kein Sonderzeichen, oder ? :confused:
MoRtAlAn 15-05-2002, 16:17 und wie müßte das in dem Fall dann aussehen??
REPLACE meine_tabelle (mein_feld) ... und wie jetzt weiter ??
P.S. Ich habe keine Php oder ähnliches, nur reines SQL um das ganze zu machen.
thx
Troublegum 15-05-2002, 16:20 Ach so..
Soweit ich weiß, geht es nur so:
SELECT REPLACE(spalte,"suche nach", "ersetze durch") FROM tabelle;
um die Daten zu ändern müsstest du wohl mit
INSERT INTO tabelle2 (feld1,feld2) SELECT REPLACE(feld1,"/","") as feld1,feld2 FROM tabelle
oder
Nicht getestet: REPLACE INTO tabelle (feld1,feld2) SELECT REPLACE(feld1,"/",""),feld2 FROM tabelle;
MoRtAlAn 15-05-2002, 16:35 ok, ich werd das mal probieren! thx!
Troublegum 15-05-2002, 16:37 REPLACE INTO tabelle (feld1,feld2) SELECT REPLACE(feld1,"/",""),feld2 FROM tabelle
funktioniert leider nicht.
Du musst also die Tabelle kopieren (Struktur) und dann alle Daten mit INSERT INTO tabelle2 (feld1,feld2) SELECT REPLACE(feld1,"/","") as feld1,feld2 FROM tabelle
ersetzen und die Tabelle wieder umbennenen.
Einfacher geht´s mit einem Umweg über php mit regulären Ausdrücken; damit bekommst du in einem Schritt alles weg, was nicht Buchstabe, Zahl oder Unterstrich ist: $feld1 = preg_replace('/[^a-zA-Z0-9_]/', '', $feld1);
Ersetzen mit regulären Ausdrücken funktioniert in mySQL leider nicht.
MoRtAlAn 16-05-2002, 09:00 tja, das geht ja leider nicht... Nur SQL... (wg Geschwindigkeit)
aber trotzdem THX
MoRtAlAn 16-05-2002, 09:39 also, so sieht jetzt mein String aus:
INSERT INTO pea_rohdaten_dummy (Kategorisierung_St2,PeacockArtNr) SELECT REPLACE(Kategorisierung_St2,"/","") as Kategorisierung_St2,PeacockArtNr FROM pea_rohdaten
jetzt bekomme ich allerdings ne Fehlermeldung:
Leere Objekt oder Spaltennamen können nicht verwendet werden. Verwenden Sie bei bedarf ein Leerzeichen.
kann damit vielleicht einer was anfangen ???
gruss
MoRtAlAn 16-05-2002, 10:58 Also, ich bin jetzt schonmal ein stückchen weiter, folgendes funzt:
Update peacock_rohdaten
Set Kategorisierung_St1 = replace(Kategorisierung_St1, ' ', '')
will ich aber mehrere Dinge auf einmal machen, geht es nicht mehr:
Update peacock_rohdaten
Set Kategorisierung_St1 = replace(Kategorisierung_St1, ' ', ''),
Kategorisierung_St1 = replace(Kategorisierung_St1, '/', '')
Da meckert er, das Kategorisierung_St1 mehrmals in der Ergebnisspaltenliste vorhanden ist....
gruss
Du solltest die Funktionsaufrufe schachteln:
Update peacock_rohdaten Set Kategorisierung_St1
= replace(replace(Kategorisierung_St1, '/', ''), ' ', '')
MoRtAlAn 16-05-2002, 13:14 jepp, hab ich gemacht, aber wie bekomm ich folgende Zeichen noch weg:
`
'
da bringt er mir immer ne Fehlermeldung :(
backslash davor setzen: \' \`
MoRtAlAn 16-05-2002, 13:41 so ??
replace(Kategorisierung_St1,'\'','')
da meckert er mir ein öfnendes Anführungszeichen an...:(
MoRtAlAn 16-05-2002, 14:01 problem gelößt:D
char(39) ...
replace(Kategorisierung_St2,'CHAR(39)','')
aber trotzdem thx!!
nicht verkehrt ... aber bist du sicher, dass die Funktion in Anführungszeichen gehört? :D
MoRtAlAn 17-05-2002, 12:58 ob mit ' oder ohne hat interessanterweise den selben effekt gehabt ?? frag nicht wiese...
wen es interessiert:
Update tabelle
Set spalte =
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(spalte, ' ', '')
,CHAR(39),'')
, '&', '')
, '<', '')
, '>', '')
, '/', '')
, '-', '')
, '(', '')
, ')', '')
, '=', '')
, '.', '')
, ',', '')
, '´', '')
, '"', 'Zoll')
edit: Einrückungen kleiner
|
|