2012-01-13 3 views
1

두 문자열 사이의 텍스트 만 업데이트하거나 바꾸는 방법을 찾으려고합니다.sql 두 문자열 사이의 모든 문자를 대체하십시오.

예를 들어 필자는 필드를 업데이트하고 다음 스크립트 태그 사이의 내용 만 바꿀 수 있어야합니다.이 스크립트 태그는 시작 스크립트 태그의 영향을받지 않습니다.

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은 문자열에 대한 최대 크기 지정자를 지원하지 않습니다. –

+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 함수는 두 개의 인수 만 사용하고')'이 누락되었습니다. –

+0

좋아,이 약간의 수정 작업을하지만 닫는 태그를 대체하지 않습니다 – user357034

관련 문제