다음을 통해 공유


ntext, text 또는 image 데이터 변경

전체 값을 대체하려면 다음 방식으로 행의 ntext, text 또는 image 값을 업데이트할 수 있습니다.

  • char, nchar 또는 binary 데이터를 지정하는 것과 같은 방식으로 UPDATE 문에 비교적 적은 양의 데이터를 지정합니다.

  • WRITETEXT를 사용합니다.

  • ADO 응용 프로그램에서는 AppendChunk 메서드를 사용하여 많은 양의 ntext, text 또는 image 데이터를 지정할 수 있습니다.

  • OLE DB 응용 프로그램에서는 ISequentialStream 인터페이스를 사용하여 새로운 ntext, text 또는 image 값을 기록할 수 있습니다. 자세한 내용은 BLOB 및 OLE 개체을 참조하십시오.

  • ODBC 응용 프로그램에서는 SQLPutData의 실행 시 데이터 형식을 사용하여 새로운 ntext, text 또는 image 값을 기록할 수 있습니다. 자세한 내용은 text 및 image 열 관리를 참조하십시오.

  • DB-Library 응용 프로그램에서는 dbwritetext 함수를 사용할 수 있습니다. 자세한 내용은 텍스트 및 이미지 함수(Transact-SQL)를 참조하십시오.

SQL Server에서는 ntext, text 또는 image 값의 일부만 업데이트할 수도 있습니다. DB-Library에서는 dbupdatetext 함수를 사용하여 이 작업을 수행하고, 다른 모든 응용 프로그램과 Transact-SQL 스크립트, 일괄 처리, 저장 프로시저 및 트리거에서는 UPDATETEXT 문을 사용하여 ntext, text 또는 image 열의 일부만 업데이트할 수 있습니다.

다음 스크립트는 UPDATETEXT와 PATINDEX를 사용하여 text 값에서 특정 문자열을 찾아서 바꾸는 것을 보여 줍니다.

USE Northwind
GO
CREATE TABLE TextParts (ColA INT PRIMARY KEY, ColB TEXT)
GO
INSERT INTO TextParts
   VALUES( 1,
           'Sample string START TAG Text to go END TAG Trailing text.')
GO
DECLARE @PtrVar BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT

SELECT @PtrVar = TEXTPTR(ColB),
       @InsertPos = (PATINDEX('%START TAG%', ColB) + 9),
       @DeleteLen = (
                      PATINDEX('%END TAG%', ColB) -
                      ( PATINDEX('%START TAG%', ColB) + 9
                              + 2 /* allow for blanks */ )
                    )
FROM TextParts
WHERE ColA = 1

UPDATETEXT TextParts.ColB
           @PtrVar
           @InsertPos
           @DeleteLen
           WITH LOG
           'The new text'
GO

SELECT * FROM TextParts
GO

최종 SELECT 문의 결과 집합은 다음과 같습니다.

ColA        ColB
----------- ------------------------------------------------------------
1           Sample string START TAG The new text END TAG Trailing text.