sql ersetzen Sie alle Zeichen, die zwischen zwei strings

Ich versuche herauszufinden, ein Weg, um zu aktualisieren /ersetzen nur den text zwischen zwei strings.

Mir zum Beispiel müssen in der Lage sein, um das Feld zu aktualisieren und ersetzen nur das, was zwischen den folgenden script-tags verlässt Sie den text vor der öffnenden script-tag unberührt.

I want to keep this string<script type="text/javascript" language="javascript">********</script>

Ich nehme an, ERSETZEN wird nicht funktionieren, da der text zwischen den script-tags variieren. Gibt es eine Art wildcard?

UPDATE Products_Joined 
SET TechSpecs = REPLACE (CAST(TechSpecs AS NVARCHAR(MAX)), '<script type="text/javascript" language="javascript">********</script>', '<script type="text/javascript" language="javascript">new text</script>' )

AKTUALISIERT: mit @Parkyprg Antwort, Das funktioniert aber nicht ersetzen die Schließung </script> tag.
Ich am Ende mit dieser.

I want to keep this string new text</script>

Wie entfernen wir das schließende script-tag, wie auch?

UPDATE Products_Joined
SET TechSpecs = REPLACE(CAST(TechSpecs AS NVARCHAR(MAX)), 
SUBSTRING(CAST(TechSpecs AS NVARCHAR(MAX)),
CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs),
CHARINDEX('</script>',CAST(TechSpecs AS NVARCHAR(MAX))) - 
CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs)
),' new text') 
  • Check dieser und dieser.
  • Wie funktioniert nvarchar(max) im code korrelieren mit der sql-server-2000 tag, Ihre Frage hat? SQL Server 2000 bietet keine Unterstützung für die max Größe Bezeichner für die Saiten.
  • Vielleicht ist es nicht 2000, nicht wirklich sicher.
  • Sie können SELECT @@VERSION zu finden. Für die Fragen der Zukunft am besten zu sagen, die richtige version wie 2000, hat viele Einschränkungen im Vergleich zu 2005 und 2008, so dass Sie können auch sub-optimalen Antworten.
  • hmm, versucht aber wieder nichts, kein Fehler entweder.
  • OK. Auch Sie müssen auf mindestens 2005 als nvarchar(max) funktioniert. Wenn Sie ausführen DECLARE @I INT = 1 tun, erhalten Sie eine Fehlermeldung? Wenn Sie auf das Jahr 2008. 2005 wäre Ihnen der Fehler Cannot assign a default value to a local variable.
  • Läuft, bekomme ich "kann Nicht zuordnen einen default-Wert an eine lokale variable."
  • So müssen Sie auf 2005 dann.

InformationsquelleAutor user357034 | 2012-01-13
Schreibe einen Kommentar