Benutzer mit den meisten Antworten
Tabelle - auslesen, ersetzen, überschreiben

Frage
-
Hallo zusammen,
ich benutze MSSQL 2008.
Nun mein Ziel ist es, die Einträge von einer Tabelle auszulesen, überprüfen ob im Inhalt "[date]" vorhanden ist, falls ja, sollte er es mit dem aktuellen Datum ersetzen, wieder in die Dataenbank reinzuschreiben.
Doch ehrlich gesagt, bin ich mir nicht sicher wie ich das hinkriegen sollte. Gibt es eine möglichkeit die tabelle in eine Array zu schreiben und diese dann zeilenweise abzufragen?
Danke für euere Hilfe bereits im Voraus!
Antworten
-
Hallo,
das kannst Du auch mengenorientiert durchführen, indem Du auf den Begriff [date] filterst und dann im Ergebnis den Begriff durch das Datum ersetzt.
CREATE TABLE #test (Wert varchar(100)); INSERT INTO #test VALUES('Hallo Welt, heute ist der [date], stimmts?'); INSERT INTO #test VALUES('Nur ein date test'); SELECT * FROM #test; UPDATE #test SET Wert = REPLACE(Wert, '[date]', CONVERT(varchar(10), GETDATE(), 104)) WHERE Wert LIKE '%[date]%' ESCAPE '['; SELECT * FROM #test; GO DROP TABLE #test;
Das ESCAPE '[' ist nötig, da [ ] bei der Wildcard Suche als Mengenbegrenzer für eine Auflistung an gesuchten Zeichen darstellt; von daher ist Dein Platzhalter [date] nicht so ganz günstig.Olaf Helper
Blog Xing- Als Antwort vorgeschlagen Uwe RickenMVP Donnerstag, 22. November 2012 12:22
- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01
-
Hallo! Meinst Du so etwas?
Declare @MyTable as Table(PK int, Inhalt varchar(100)); Insert into @MyTable(PK, Inhalt) Values (1, 'Alles klar'); Insert into @MyTable(PK, Inhalt) Values (2, 'Datum ersetzen [date]'); Select * from @MyTable; Update @MyTable set Inhalt = replace(Inhalt, '[date]',convert(varchar(10), getdate(), 104)) where Inhalt like '%[date]%' Select * from @MyTable;
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Uwe RickenMVP Donnerstag, 22. November 2012 12:23
- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01
-
Hallo Obk,
das ist eigentich egal - Du mußt nur nach Möglichkeit für die Variablen einen Platzhalter finden, der nicht auch als gewöhnlicher Text vorkommt.
Ich mache es in meinen "MessageTexten" so, daß ich immer die Variable, wie sie im Code verwendet wird, implementierte.Beispiel:
DECLARE @ActDate char(10) = CONVERT(char(10), getdate(), 104); DECLARE @msgtext varchar(255) = 'Heute ist der @ActDate'; REPLACE(@msgText, '@ActDate', @ActDate); PRINT @MsgText;
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de
SQL Server Blog (german only)- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01
Alle Antworten
-
Hallo,
das kannst Du auch mengenorientiert durchführen, indem Du auf den Begriff [date] filterst und dann im Ergebnis den Begriff durch das Datum ersetzt.
CREATE TABLE #test (Wert varchar(100)); INSERT INTO #test VALUES('Hallo Welt, heute ist der [date], stimmts?'); INSERT INTO #test VALUES('Nur ein date test'); SELECT * FROM #test; UPDATE #test SET Wert = REPLACE(Wert, '[date]', CONVERT(varchar(10), GETDATE(), 104)) WHERE Wert LIKE '%[date]%' ESCAPE '['; SELECT * FROM #test; GO DROP TABLE #test;
Das ESCAPE '[' ist nötig, da [ ] bei der Wildcard Suche als Mengenbegrenzer für eine Auflistung an gesuchten Zeichen darstellt; von daher ist Dein Platzhalter [date] nicht so ganz günstig.Olaf Helper
Blog Xing- Als Antwort vorgeschlagen Uwe RickenMVP Donnerstag, 22. November 2012 12:22
- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01
-
Hallo! Meinst Du so etwas?
Declare @MyTable as Table(PK int, Inhalt varchar(100)); Insert into @MyTable(PK, Inhalt) Values (1, 'Alles klar'); Insert into @MyTable(PK, Inhalt) Values (2, 'Datum ersetzen [date]'); Select * from @MyTable; Update @MyTable set Inhalt = replace(Inhalt, '[date]',convert(varchar(10), getdate(), 104)) where Inhalt like '%[date]%' Select * from @MyTable;
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Uwe RickenMVP Donnerstag, 22. November 2012 12:23
- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01
-
Hallo Obk,
das ist eigentich egal - Du mußt nur nach Möglichkeit für die Variablen einen Platzhalter finden, der nicht auch als gewöhnlicher Text vorkommt.
Ich mache es in meinen "MessageTexten" so, daß ich immer die Variable, wie sie im Code verwendet wird, implementierte.Beispiel:
DECLARE @ActDate char(10) = CONVERT(char(10), getdate(), 104); DECLARE @msgtext varchar(255) = 'Heute ist der @ActDate'; REPLACE(@msgText, '@ActDate', @ActDate); PRINT @MsgText;
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de
SQL Server Blog (german only)- Als Antwort markiert 0bk__ Donnerstag, 22. November 2012 13:01