![]() |
Datenbank: MYSQL • Version: 5 • Zugriff über: PHP
einzelnes Wort in SQL ändern
Hallo,
ich habe folgendes problem, ich wollte ein Wort von mehreren in einer tabelle ändern und weiß nicht wie. Beispiel: Tabelle Name: Hans Müstermann Und jetzt will ich z.b. nur das "Mustermann" ändern. Wie könnte ich das mit SQL machen???? |
Re: einzelnes Wort in SQL ändern
Deine Frage ist reichlich unpräzise:
Willst du Dateninhalte ändern oder Tabellen-/Feldnamen ändern ? Man kann Dateninhalte nur im Gesamten ändern:
SQL-Code:
UPDATE TabelleXY SET Ansprechpartner='Hans Ohnesorg' WHERE Ansprechpartner='Hans Müstermann'
|
Re: einzelnes Wort in SQL ändern
Ne das muss gehen ich weiß nicht was vorher in der Tabelle steht also der soll mit einer angabe von Stellen das ändern. ich hab mal gelesen mit $nachname = Mustermann{36]. Dieses 36 steht dafür an welcher stelle das geändert wird, aber ich weiß nicht wie das genau gehen soll.
|
Re: einzelnes Wort in SQL ändern
Hallo XXcD,
versuch doch mal...
SQL-Code:
Gruss
UPDATE TabelleXY
SET Ansprechpartner = REPLACE(Ansprechpartner, 'Müstermann', 'Mustermann') WHERE ... Thorsten |
Re: einzelnes Wort in SQL ändern
Ich glaube ich hab das immernoch falsch beschrieben. Ich meinte das so ich der Tabelle steht was und ich weiß nur dass das zweite wort geändert werden soll. Mit dem Mustermann das weiß ich garnicht dass das da steht.
|
Re: einzelnes Wort in SQL ändern
Dafür kennt MySQL leider keinen geeigneten Befehl...
Das musst du dann wohl selber basteln...
SQL-Code:
Elegant ist das allerdings nicht.
SELECT CASE WHEN INSTR(name, ' ') > 0
THEN CONCAT( SUBSTRING(name, 1, INSTR(name, ' ')), 'Ersetzung', SUBSTRING( name, INSTR(name, ' ') + 1 + INSTR(RIGHT(CONCAT(name, ' '), INSTR(name, ' ') + 1), ' '), LENGTH(name)) ) ELSE name END name FROM tabelle Gruss Thorsten |
Re: einzelnes Wort in SQL ändern
Danke das hat mir schonmal weitergeholfen. Hat diese Prozedure vielleicht einen Namen den man bei google finden kann? Dann könnte ich mich damit noch ein wenig vertraut machen da ich kaum Ahnung von SQL habe.
|
Re: einzelnes Wort in SQL ändern
Welche Prozedur? Ich habe dir oben eine SQL-Abfrage geschrieben, in der ich einige SQL-Funktionen benutzt habe...
SQL-Code:
Schau doch mal
INSTR, CONCAT, SUBSTRING, RIGHT, LENGTH
![]() Gruss Thorsten |
Re: einzelnes Wort in SQL ändern
Ich kriege das einfach nicht hin *heul*. Sagen wir mal ich möchte das 43. Wort ändern. Wie müsste ich das dann machen????
|
Re: einzelnes Wort in SQL ändern
Was willst du da eigentlich genau machen? Meinst du das das sinnvoll ist solche Sachen direkt über ein SQL-Statement zu machen?
Verwunderte Grüsse Thorsten |
Re: einzelnes Wort in SQL ändern
Ich will über php ein onclick verfahren machen wenn man ein banner auf meiner website anklickt soll eine php dateiausgeführt werden und zwar der script mit dem sql. Und in dem script soll in einer spalte das 43. wort geändert werden.
|
Re: einzelnes Wort in SQL ändern
du könntest das jeweilige feld einfach auslesen,
das ganze mit
Delphi-Quellcode:
auseinander flücken und den ersten teil des arrays mit deinem neuen string wieder zusammensetzen
$vorundnachname=explode(" ",$nameausderdatenbank);
$neuername=$vorundnachname[0].' '.$neuernachname; mysql_query("UPDATE 'db' SET name='$neuername' WHERE name='$nameausderdatenbank'"); und dann das ganze in die db eintragen ;) |
Re: einzelnes Wort in SQL ändern
So ein neuer Versuch.
In SQL bzw. einer Function auf dem DB-Server könnte das so aussehen...
SQL-Code:
Und der Aufruf...
CREATE FUNCTION func_myreplace (Source VARCHAR(1000),
NewWord VARCHAR(20), WordIndex INT) RETURNS VARCHAR(1000) BEGIN DECLARE i INT DEFAULT 0; DECLARE p INT DEFAULT 0; DECLARE g INT DEFAULT 0; DECLARE xSource VARCHAR(1000) DEFAULT ''; IF WordIndex = 0 THEN SET xSource = CONCAT(NewWord, ' ', Source); END IF; WHILE p <= LENGTH(Source) AND WordIndex > 0 DO SET p = INSTR(Source, ' '); IF p = 0 THEN SET p = LENGTH(Source); END IF; WHILE (p < LENGTH(Source)) AND SUBSTRING(Source, p+1, 1) = ' ' DO SET p = p + 1; END WHILE; SET i = i + 1; IF WordIndex = i THEN SET xSource = CONCAT(xSource, NewWord); SET g = 1; ELSE SET xSource = CONCAT(xSource, SUBSTRING(Source, 1, p)); SET p = p + 1; END IF; SET Source = SUBSTRING(Source, p, LENGTH(Source)); END WHILE; IF WordIndex > 0 THEN IF WordIndex <> i+1 THEN SET xSource = CONCAT(xSource, Source); END IF; IF g = 0 THEN SET xSource = CONCAT(xSource, ' ', newWord); END IF; END IF; RETURN xSource; END
SQL-Code:
WordIndex = 0: Neues Wort wird vorne angehängt
UPDATE tabelle
SET spalte = func_myreplace(spalte, 'Neues Wort', 43) WHERE ... WordIndex > Anzahl Wörter: Neues Wort wird hinten angehängt 0 < WordIndex <= Anzahl Wörter: Das n'te Wort wird durch das neue Wort ersetzt Gruss Thorsten |
Re: einzelnes Wort in SQL ändern
Perfekt!!! Kann ich die funktion denn auch in PHP einbauen???
|
Re: einzelnes Wort in SQL ändern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz