REPLACE

heinzeric

Benutzer
Beiträge
12
Hallo, was ist an meiner Abfrage falsch?
SELECT REPLACE('straße', 'ß', 'ß');
Ich bekomme von PHPadmin zwar keine Fehlermeldung, es werden aber auch 0 Datensätze geändert, obwohl davon gibt es eine ganze Menge.
Hat jemand vielleicht eine Idee?
Danke heinzeric
 
Werbung:

heinzeric

Benutzer
Beiträge
12
Hm, da liegt wohl der Hase im Pfeffer:
SELECT * FROM `..._acymailing_subscriber` WHERE `ldkrs` LIKE 'Rügen'
ergbit:
MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze). ( Die Abfrage dauerte 0.0011 Sekunden )
Aber 'Rügen' habe ich mir aus der Tabelle mit Strg C heraus kopiert.

Allerdings stelle ich fest, dass die Abfrage mit "LIKE 'Vorpommern'" zum gleichen Ergebnis führt. Beide Zeichenkentten gibt es aber zigfach in der Spalte.
 

ukulele

Datenbank-Guru
Beiträge
4.409
Bei LIKE musst du mit % als Platzhalter arbeiten wenn davor und oder dahinter noch weinterer Text steht.

Ansonsten könnte es auch schlicht ein Problem der Ausgabe sein und in Wahrheit steht dort Rügen in der Tabelle nur die Ausgabe stellt eben Rügen dar. Das würde aber nicht das Vorpommern Problem erklären.
 

heinzeric

Benutzer
Beiträge
12
Doch, es erklärt es schon. Denn der Eintrag heißt "Vorpommern-Rügen".
Die Abfrage:
SELECT * FROM `..._acymailing_subscriber` WHERE `ldkrs` LIKE 'Vorpommern%'
ergab:
Zeige Datensätze 0 - 29 ( 69 insgesamt, Die Abfrage dauerte 0.0002 Sekunden)
Und die Abfrage:
SELECT * FROM `..._acymailing_subscriber` WHERE `ldkrs` LIKE '%Rügen'
ergibt:
Zeige Datensätze 0 - 27 ( 28 insgesamt, Die Abfrage dauerte 0.0002 Sekunden)
Also das Problem wäre schon mal gelöst. Vielen Dank!

Die Zeichenkette "Rügen" wird auch so in der DB erkannt und in Joomla so auch dargestellt. Dann stellt sich aber die Frage, was ist in der REPLACE-Abfrage falsch?
Der Syntax ist jedenfalls richtig, sonst würde ich eine FFehlermeldung bekommen. Und selbst wenn ich mal aus der Maskierung rausgehe, und stattdessen
SELECT REPLACE('Varpommern', 'Var', 'Vor');
abfrage, bekomme ich:
Zeige Datensätze 0 - 0 ( 1 insgesamt, Die Abfrage dauerte 0.0002 Sekunden)
Ich habe natürlich vorher in einem Datensatz Vorpommern durch Varpommern ersetzt.

Also irgend etwas anderes scheint da nicht zu stimmen.
 

ukulele

Datenbank-Guru
Beiträge
4.409
Ich gebe dir recht das sollte Funktionieren. Gibt
Code:
SELECT 1,REPLACE('Varpommern', 'Var', 'Vor');
auch kein Ergebniss oder 1,NULL?
 

heinzeric

Benutzer
Beiträge
12
Zeige Datensätze 0 - 0 ( 1 insgesamt, Die Abfrage dauerte 0.0002 Sekunden)
SELECT 1 , REPLACE( 'Varpommern', 'Var', 'Vor' )

...
1 REPLACE('Varpommern', 'Var', 'Vor')
1 Vorpommern
Das Ergebnis ist wie oben. Es wird ja auch kein Datensatz angezeigt. Ich hatte übrigens für die Abfrage in 2 Datensätzen Varpommern eingetragen. Was will mir PHPadmin aber mit dem unteren Teil sagen?
 

akretschmer

Datenbank-Guru
Beiträge
9.160
Das bringt mich jetzt leider auch nicht weiter...
Verständlich. Vermutlich hast du ein Update von Mysql gemacht. Mysql hat das tolle Negativ - Feature, übergebene Daten nicht zu prüfen. Hier, ob die Daten im korrekten Zeichensatz vorliegen. Deine jetzige Version kommt daher mit dem, was falsch in der DB ist, nicht zurecht. Man kann da um das Problem mit einigen Tricks drum herum frickeln,aber das ist alles recht schmutzig. Google kennt das Problem und ca. 50000 Lösungsansätze...
 

heinzeric

Benutzer
Beiträge
12
Nö, an MySQL liegt es nicht (sosehr ich dem Bill auch immer gern die Schuld geben will).

Mein Webprovider hat mir die richtige Abfrage mitgeteilt:
UPDATE [Tabellenname]
SET [Spaltenname]=REPLACE('RAstock','A', 'o')
WHERE [Spaltennamen]='RAstock';
Hab's gleich getestet und es funzt. :)
Trotzdem danke für deine Anteilnahme.
Gruß heinzeric
 
Werbung:
Oben