sourcecode

텍스트 또는 ntext 데이터 유형의 REPLACE

codebag 2023. 4. 23. 10:18
반응형

텍스트 또는 ntext 데이터 유형의 REPLACE

datatable.column의 데이터를 업데이트/교체해야 합니다.테이블에는 다음과 같은 필드가 있습니다.Content를 사용하고 있습니다.REPLACE기능.열 데이터 유형이NTEXT, SQL Server 에서는,REPLACE기능.

이 데이터베이스는 서드파티 소프트웨어 테이블이므로 데이터 유형을 변경할 수 없습니다.데이터 유형을 변경하면 응용 프로그램이 실패합니다.

UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] 
SET Content = REPLACE(Content,'ABC','DEF') 
WHERE Content LIKE '%ABC%' 

이 에러를 수신합니다.

Msg 8116, 수준 16, 상태 1, 줄 1: 교체 함수의 인수 1에 대한 인수 데이터 형식 ntext가 잘못되었습니다.

  • T-SQL로 수정할 수 있나요?읽는 방법과 루프하는 방법의 예를 가지고 있는 사람이 있습니까?
  • 일회성 변환이기 때문에 다른 타입으로 변경할 수 있을 것 같은데 데이터를 망치고 있는 것 같습니다.

기본 키 필드가 있습니다. 이름: ID - 정수 - ID입니다.그래서 저도 생각해봐야겠어요.Identity를 N temporary로 설정합니다.

REPLACE 기능을 실행하는 방법에 대해 조언해 주시겠습니까?

약 3000개의 스테이트먼트를 새로운 솔루션으로 갱신해야 합니다.

데이터4000자를 넘지 않고 SQL Server 2000 또는 호환성 수준 8 또는 SQL Server 2000에 있는 경우:

UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] 
SET Content = CAST(REPLACE(CAST(Content as NVarchar(4000)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%' 

SQL Server 2005+의 경우:

UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] 
SET Content = CAST(REPLACE(CAST(Content as NVarchar(MAX)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%' 

SQL Server 2000을 전제로 다음 Stack Overflow 질문을 통해 문제를 해결할 수 있습니다.

SQL Server 2005/2008을 사용하는 경우 다음 코드를 사용할 수 있습니다(여기서 취득).

select cast(replace(cast(myntext as nvarchar(max)),'find','replace') as ntext)
from myntexttable

언급URL : https://stackoverflow.com/questions/4341613/alternatives-to-replace-on-a-text-or-ntext-datatype

반응형