SSMS 2008을 사용하고 있으며 다음과 같은 스칼라 기능을 사용하여 텍스트 문자열을 가져와 Microsoft Word에서 모든 메타 태그를 제거합니다. 태그는 "< ...>"로 묶여 있으며 하나의 열에 여러 개의 태그/레코드가있을 수 있습니다.TSQL 바꾸기 테이블 함수를 만드는 방법은 무엇입니까?
이 열의 각 행을 업데이트하려면 아래 코드를 기반으로 스칼라 함수를 만들었습니다. 그러나이 스칼라 함수는 완료하는 데 오랜 시간이 걸립니다. 이 테이블 함수 버전이 더 빠를까요? 그렇다면이 함수를 테이블로 만들기 위해 어떻게 다시 작성할 수 있습니까?
WHILE PATINDEX('%[%]%', @str) > 0
SET @str = REPLACE(@str, SUBSTRING(@str,
PATINDEX('%[%]%', @str), 1), '')
SELECT @str
이 테이블 함수는 거의 작동합니다. 그러나 그것이 지금은 효과가 없다는 것이 밝혀졌습니다. 문제는 임시 테이블에서이 함수를 사용하려고한다는 것입니다. 원래 테이블에는 int PK가 없으므로 원본 테이블에 열을 추가 할 수 없습니다.
그래서이 테이블을 기반으로보기를 만든 다음 PK int 열을 추가하려고했습니다. 나는이 추가 PK의 INT 컬럼 ("N")와보기를 만들려고 할 때, 그것은 나에게 오류 준 때문에 :
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'identity'.
을하지만 ALTER VIEW는 열을 추가 지원하지 않습니다. 이것을 할 또 다른 방법이 있습니까? 여기에 내 원래 임시 테이블은 내가 수정하려고 :
select [progress_note].[note_text], [progress_note].[event_log_id]
INTO #TEMP_PN
from [evolv_cs].[dbo].[progress_note]
group by [progress_note].[event_log_id], [progress_note].[note_text]
는 [NOTE_TEXT] VARCHAR (최대) 및 event_log_id입니다 고유 식별자. 따라서 [note_text]에는 "<"및 ">"문자가 포함되어 있습니다. 이 dbo.ufn_StripHTML 함수를 어떻게 수정할 수 있습니까?
나는 최신 코드를 시험해 보았는데 이것은 초고속 !! 그러나 5700 행을 통과 한 후에 다음과 같은 오류가 발생했습니다.
Msg 537, Level 16, State 2, Line 1
Invalid length parameter passed to the LEFT or SUBSTRING function.
이 항목에 대해 알고 계십니까?
SQL 서버 CLR 고려해야하는 옵션입니다. –
note_text 길이가> 내가 제공 한 500 가지 테스트 예제보다 Number 테이블에 더 많은 행이 필요할 수 있습니다. 또한 내 varchar (8000) -> max를 수정 한 후 테스트해야합니다. 자세한 내용은 여기를 읽어보십시오 -> http://www.sqlservercentral.com/articles/T-SQL/62867/ –