2009-07-17 2 views
1

필드에 불완전한 데이터가있는 내 MS SQL 데이터베이스에 테이블이 있습니다. 해당 필드는 varchar 필드이며 필드에 약 1000자를 포함합니다. 이 문자열은 슬래시 뒤에 세그먼트가오고 슬래시 (/ p /)로 끝나는 형식의 단어 세분화로 구성됩니다. 각 세그먼트는 공백으로 구분됩니다. 문제는 특정 세분화에 마지막 슬래시 (/ p)가없는 것입니다. 이 문제를 해결할 T-SQL 스크립트를 작성해야합니다.T-SQL을 사용하는 MS SQL의 긴 문자열에서 특정 패턴 바꾸기

업데이트 구문을 사용해야 할 것입니다. 나는 where 절도 가지고있다. 그러나 내가 가지고있는 문제는 내가 그것을 무엇과 동일하게 설정 하는가입니다. 문자열의 길이가 약 1000 자이기 때문에 실제 문자열을 입력하고 문제가있는 세그먼트를 수정하지 않으려 고합니다. 내 질문은 문제가되는 세그먼트를 변경하고 문자열의 나머지 부분 만 남겨 둘 수있는 "RegEx replace function"이 있습니까?

도움을 주시면 대단히 감사하겠습니다. 사전에

감사합니다, 몬테

답변

1

SQL은 그 안에 정규식을 지원하지 않습니다. SQL CLR 함수를 작성하여 데이터를 파이프 할 수 있으며 데이터에 문제가있는 경우 정정 된 버전을 SQL로 리턴하십시오. 당신은 (대부분의 기계가 할) Windows 스크립트 호스트가 설치되어있는 경우

UPDATE YourTable 
    Set YourColumn = dbo.YourClrProc(YourColumn) 
1

, 당신은 T-SQL에서 VBScript.RegExp 객체로 호출 할 this method를 사용할 수 있습니다.

1

REPLACE이 있지만 RegEx와 아무 관련이 없습니다.

한 번 작업하는 경우 테이블 내보내기를 고려하고 sed 또는 grep과 같은 익숙한 도구를 사용한 다음 수정 된 데이터를 다시 가져올 수 있습니다. 아마도 T-SQL에서이 작업을 시도하는 것보다 더 빠르고 정확할 것입니다.

한편 계획된 유지 관리 작업을 수행하는 경우 데이터를 유지 관리하는 방법으로 자주 반복해야합니다. 그런 다음 mrdenny와 동의합니다. CLR 기능이 아마도 최선의 선택 일 것입니다.

관련 문제