복붙노트

[SQL] 대안은 텍스트 또는 NTEXT 데이터 형식에 교체하려면

SQL

대안은 텍스트 또는 NTEXT 데이터 형식에 교체하려면

나는 / 업데이트 datatable.column의 데이터를 교체해야합니다. 표는 컨텐츠라는 이름의 필드가 있습니다. 나는 기능을 대체 사용하고 있습니다. 열 데이터 형식이 NTEXT을하기 때문에, SQL 서버는 나를 바꾸기 기능을 사용할 수 없습니다.

이 데이터베이스는 제 3 자 소프트웨어 테이블이 있기 때문에 나는 데이터 유형을 변경할 수 없습니다. 데이터 유형을 변경하면 응용 프로그램이 실패합니다.

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

이 오류를 수신 :

기본 키 필드가 : 이름 : ID - 정수 - 나도 이것에 대해 생각해야합니다 그래서 .... 정체성입니다. 어쩌면 N의 신원 임시로 설정합니다.

바꾸기 기능을 달성하는 방법을 알려 주시기 바랍니다?

약. 3000 개 문은 새로운 솔루션으로 업데이트해야합니다.

해결법

  1. ==============================

    1.데이터는 4000 개 문자 오버 플로우는 SQL Server 2000 또는 2000 8 또는 SQL 서버의 호환성 수준에있어하지 않을 경우 :

    데이터는 4000 개 문자 오버 플로우는 SQL Server 2000 또는 2000 8 또는 SQL 서버의 호환성 수준에있어하지 않을 경우 :

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

    2005 + SQL Server의 경우 :

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

    2.SQL 서버 2000를 가정하면, 다음과 같은 StackOverflow의 질문은 당신의 문제를 해결해야한다.

    SQL 서버 2000를 가정하면, 다음과 같은 StackOverflow의 질문은 당신의 문제를 해결해야한다.

    SQL 서버 2005/2008을 사용하는 경우, 당신은 (여기에서 가져온) 다음과 같은 코드를 사용할 수 있습니다 :

    select cast(replace(cast(myntext as nvarchar(max)),'find','replace') as ntext)
    from myntexttable
    
  3. from https://stackoverflow.com/questions/4341613/alternatives-to-replace-on-a-text-or-ntext-datatype by cc-by-sa and MIT license