재우니의 블로그



펌 : http://www.dbguide.net/dbqa/dbqa111003.jsp?catenum=27&page=1&idx=9052

뒤에 붙은 스크립트가 같은 것이 반복되느냐 아니냐, 그리고, 컬럼이 text 인지 일반 char 인지 확인해서 참고해서 적용하시면 되겠습니다.

 

 

-- 테스트환경.

 

CREATE TABLE Test

(A varchar(1000) NULL)

GO

 

 

INSERT Test (A)

VALUES ('asdfdas.jpg<script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script>')

GO

 

INSERT Test (A)

VALUES ('asdfadsf.zip<script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script><script src=http://dae3.cn></script>')

GO

 

 

INSERT Test (A)

VALUES ('dfdasfdasf.jpgsdkaf')

GO

 

INSERT Test (A)

VALUES ('dsfasfdasf.zipdedfg')

GO

 

SELECT * FROM Test

GO

 


 

 

/* 반복되는스크립트가일정할때.  컬럼이TEXT 타입인경우, VARCHAR 으로형변환후함.

SQL Server 2000 의경우VARCHAR(8000) 이최대길이이므로, 최대길이는비교해보고해야함

*/

UPDATE Test

SET A = REPLACE(CONVERT(VARCHAR(8000),A) , '<script src=http://dae3.cn></script>', '')

 

 -- 반복되는스크립트가일정하지않고, 특정파일뒤에만짜르고싶은경우. 컬럼이TEXT 일경우

UPDATE Test

SET A = LEFT(CONVERT(VARCHAR(8000),A),CHARINDEX( '.jpg',CONVERT(VARCHAR(8000),A))+3)

WHERE  CHARINDEX( '.jpg',CONVERT(VARCHAR(8000),A)) > 0

 

 

UPDATE Test

SET A = LEFT(CONVERT(VARCHAR(8000),A),CHARINDEX( '.zip',CONVERT(VARCHAR(8000),A))+3)

WHERE  CHARINDEX( '.zip',CONVERT(VARCHAR(8000),A)) > 0

 

 

-- 반복되는스크립트가일정할때. 컬럼이그냥일반char , varchar 등일경우.

UPDATE Test

SET A = REPLACE(A , '<script src=http://dae3.cn></script>', '')

 

-- 반복되는스크립트가일정하지않고, 특정파일뒤에만짜르고싶은경우.

UPDATE Test

SET A = LEFT(A,CHARINDEX( '.jpg',A)+3)

WHERE  CHARINDEX( '.jpg',A) > 0

 

UPDATE Test

SET A = LEFT(A,CHARINDEX( '.zip',A)+3)

WHERE  CHARINDEX( '.zip',A) > 0

 

 

/*

asdfdas.jpg

asdfadsf.zip

dfdasfdasf.jpg

dsfasfdasf.zip

*/