Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
per SQLl Strings bearbeiten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




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.

 
Titus
16-05-2002, 07:29 
 
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

 
Titus
16-05-2002, 12:49 
 
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 :(

 
Titus
16-05-2002, 13:33 
 
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!!

 
Titus
17-05-2002, 12:46 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:10 Uhr.