Ersetzen von Text auf Basis von Daten in einer anderen Tabelle (SQL 2005)

03/06/2009 - 14:51 von Gerald Aichholzer | Report spam
Hallo NG,

ich habe eine Tabelle mit einer Liste von Fragen, die
auch Metainformationen (in spitzen Klammern) enthalten
können, z.B.

Wie finden Sie <PRODUKT1>?

Weiters gibt es eine Tabelle, die pro Mandant (verein-
facht formuliert) die konkreten Werte für diese Meta-
informationen enthàlt.

Bei der Anzeige der Liste von Fragen würde ich gerne
die Metainformation durch die konkreten Werte für den
aktuellen Mandanten ersetzen.

Was wàre eine gute Vorgangsweise? (SQL Server 2005)

Vereinfachend kann man annehmen, dass pro Frage maximal
eine Metainformation enthalten ist, die Anzahl der un-
terschiedlichen Metainformationen ist jedoch beliebig.

vielen Dank und schöne Grüße,
Gerald
 

Lesen sie die antworten

#1 Frank Kalis
03/06/2009 - 15:21 | Warnen spam
On 3 Jun., 14:51, Gerald Aichholzer wrote:

ich habe eine Tabelle mit einer Liste von Fragen, die
auch Metainformationen (in spitzen Klammern) enthalten
können, z.B.

     Wie finden Sie <PRODUKT1>?

Weiters gibt es eine Tabelle, die pro Mandant (verein-
facht formuliert) die konkreten Werte für diese Meta-
informationen enthàlt.

Bei der Anzeige der Liste von Fragen würde ich gerne
die Metainformation durch die konkreten Werte für den
aktuellen Mandanten ersetzen.

Was wàre eine gute Vorgangsweise? (SQL Server 2005)

Vereinfachend kann man annehmen, dass pro Frage maximal
eine Metainformation enthalten ist, die Anzahl der un-
terschiedlichen Metainformationen ist jedoch beliebig.




Das solltest Du mit der STUFF() Funktion erledigen können. So in etwa:

DECLARE @t1 TABLE (id int, c1 varchar(100))
DECLARE @t2 TABLE (id int, c2 varchar(100))

INSERT INTO @t1 SELECT 1, 'Wie finden Sie <PRODUKT1>?'

INSERT INTO @t2 SELECT 1, 'unser neues supertolles Produkt'

SELECT c1, c2,
STUFF(c1, CHARINDEX('<', c1), CHARINDEX('>', c1) - CHARINDEX('<',
c1) + 1, c2)
FROM
@t1
JOIN
@t2 ON [@t1].id = [@t2].id;
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Ähnliche fragen