2012-01-13 5 views
1

私は2つの文字列間のテキストのみを更新/置換する方法を見つけようとしています。sqlは2つの文字列の間のすべての文字を置換します

たとえば、フィールドを更新して、次のスクリプトタグの間にあるものだけを置き換えて、開始スクリプトタグの前にテキストを残しておく必要があります。

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

スクリプトタグの間のテキストが異なるため、REPLACEは機能しないと考えます。ワイルドカードの種類はありますか?

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>') 

更新日:@Parkyprgでこれは動作しますが、閉じ</script>タグに代わるものではありません答えます。 私はこれで終わります。

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

閉じるスクリプトタグも同様に削除しますか?

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') 
+1

チェック[この](http://www.sqlteam.com/article/regular-expressions-in ...最善の解決策ではないかもしれないが、 -t-sql)と[this](http://www.codeproject.com/KB/mcpp/xpregex.aspx)を参照してください。 –

+0

あなたのコードの 'nvarchar(max)'はあなたの質問にある 'sql-server-2000'タグとどのように関連していますか? SQL Server 2000は文字列の 'max'サイズ指定子をサポートしていません。 –

+0

恐らくそれは2000年ではありません。 – user357034

答えて

4
DECLARE @OpenTag varchar(100) 
SET @OpenTag = '<script type="text/javascript" language="javascript">' 

UPDATE Products_Joined 
SET TechSpecs = STUFF(TechSpecs , 
         CHARINDEX(@OpenTag, TechSpecs ,1) + LEN(@OpenTag), 
          CHARINDEX('</script>',TechSpecs ,1)-(CHARINDEX(@OpenTag, TechSpecs ,1) + LEN(@OpenTag)), 
         'New Text') 
+0

これはSQL Server 2000で実行されません – Lamak

+0

@Lamak - これでいいはずです。 –

+0

+1、Yeap、今すぐうまく動くべきです – Lamak

2

それは

UPDATE Products_Joined 
SET TechSpecs = REPLACE(TechSpecs, 
SUBSTRING(TechSpecs, 
    CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs), 
    CHARINDEX('</script>',TechSpecs) - 
    CHARINDEX('<script type="text/javascript" language="javascript">',TechSpecs) 
) 
FROM MyTable 
+0

置き換えたいものを追加する必要があります。現時点では、REPLACE関数は2つの引数しか取らず、 ')'がありません。 –

+0

これはちょっとした変更を加えても機能しますが、閉じるの代わりにタグ – user357034

関連する問題