다음을 통해 공유


UPDATETEXT(Transact-SQL)

기존의 text, ntext 또는 image 필드를 업데이트합니다. UPDATETEXT를 사용하여 text, ntext 또는 image 열의 일부만 변경할 수 있습니다. WRITETEXT를 사용하여 text, ntext 또는 image 필드 전체를 업데이트하고 바꿀 수 있습니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 큰 값 데이터 형식 및 UPDATE 문의 .WRITE 절을 사용합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

UPDATETEXT { table_name.dest_column_name dest_text_ptr }
    { NULL | insert_offset }
     { NULL | delete_length }
     [ WITH LOG ]
     [ inserted_data
    | { table_name.src_column_name src_text_ptr } ]

인수

  • table_name**.**dest_column_name
    업데이트할 테이블 및 text, ntext 또는 image 열의 이름입니다. 테이블 이름 및 열 이름은 식별자 규칙을 따라야 합니다. 필요에 따라 데이터베이스 이름이나 소유자 이름을 지정할 수 있습니다.

  • dest_text_ptr
    업데이트할 text, ntext 또는 image 데이터를 가리키는 텍스트 포인터 값(TEXTPTR 함수에서 반환된 값)입니다. dest_text_ptr은 binary(16)여야 합니다.

  • insert_offset
    업데이트의 경우 0부터 시작하는 시작 위치입니다. text 또는 image 열의 경우 insert_offset은 새 데이터를 삽입하기 전에 기존 열의 시작점에서부터 건너뛰어야 하는 바이트 수입니다. ntext 열의 경우 insert_offset은 문자 수이며 각 ntext 문자는 2바이트를 사용합니다. 0부터 시작하는 시작 위치에 있는 기존의 text, ntext 또는 image 데이터는 새 데이터에 필요한 공간을 만들기 위해 오른쪽으로 옮겨집니다. 값이 0이면 기존 데이터의 시작점에 새 데이터를 삽입합니다. 값이 NULL이면 기존의 데이터 값에 데이터를 새로 추가합니다.

  • delete_length
    기존의 text, ntext 또는 image 열에서 삭제할 데이터의 길이로, insert_offset 위치부터 삭제됩니다. delete_length값은 text 및 image 열의 경우 바이트로 지정되며 ntext 열의 경우 문자로 지정됩니다. 각 ntext 문자는 2바이트를 사용합니다. 값이 0이면 데이터를 삭제하지 않습니다. 값이 NULL이면 insert_offset 위치에서 기존의 text 또는 image 열의 끝까지 데이터를 모두 삭제합니다.

  • WITH LOG
    로깅은 데이터베이스에 영향을 주는 복구 모델에 의해 결정됩니다.

  • inserted_data
    insert_offset 위치에서 기존의 text, ntext 또는 image 열에 삽입될 데이터로, 단일 char, nchar, varchar, nvarchar, binary, varbinary, text, ntext 또는 image 값입니다. inserted_data는 리터럴 또는 변수일 수 있습니다.

  • table_name.src_column_name
    삽입된 데이터 원본으로 사용되는 text, ntext 또는 image 열 이름과 테이블의 이름입니다. 테이블 이름과 열 이름은 식별자 규칙을 따라야 합니다.

  • src_text_ptr
    삽입된 데이터 원본으로 사용되는 text, ntext 또는 image 열을 가리키는 텍스트 포인터 값(TEXTPTR 함수에서 반환되는 값)입니다.

    [!참고]

    scr_text_ptr 값은 dest_text_ptr 값과 같을 수 없습니다.

주의

새로 삽입되는 데이터는 단일 inserted_data 상수, 테이블 이름, 열 이름 또는 텍스트 포인터일 수 있습니다.

업데이트 동작

UPDATETEXT 매개 변수

기존 데이터를 바꾸려면

Null이 아닌 insert_offset 값, 0이 아닌 delete_length 값 및 삽입할 새 데이터를 지정합니다.

기존 데이터를 삭제하려면

Null이 아닌 insert_offset 값과 0이 아닌 delete_length 값을 지정합니다. 삽입할 새 데이터를 지정하지 않습니다.

새 데이터를 삽입하려면

insert_offset 값, delete_length 값 0 및 삽입할 새 데이터를 지정합니다.

최고의 성능을 위해 text, ntext 및 image 데이터는 8,040바이트의 배수인 청크 크기로 삽입하거나 업데이트하는 것이 좋습니다.

SQL Server에서는 text, ntext 또는 image 데이터에 대한 행 내부 텍스트 포인터가 있어도 유효하지 않을 수 있습니다. text in row 옵션에 대한 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하십시오. 텍스트 포인터를 무효화하는 방법은 sp_invalidate_textptr(Transact-SQL)를 참조하십시오.

text 열을 NULL로 초기화하려면 호환성 수준이 65일 때 UPDATETEXT를 사용합니다. 호환성 수준이 70인 경우에는 WRITETEXT를 사용하여 텍스트 열을 NULL로 초기화합니다. 그렇지 않은 경우에는 UPDATETEXT가 text 열을 빈 문자열로 초기화합니다. 호환성 수준을 설정하는 방법은 sp_dbcmptlevel(Transact-SQL)을 참조하십시오.

사용 권한

지정된 테이블에 대해 UPDATE 권한이 필요합니다.

다음은 텍스트 포인터를 로컬 변수인 @ptrval에 둔 다음 UPDATETEXT를 사용하여 맞춤법 오류를 업데이트하는 예입니다.

[!참고]

이 예를 실행하려면 pubs 데이터베이스를 설치해야 합니다. pubs 데이터베이스를 설치하는 방법은 Northwind 및 pubs 예제 데이터베이스 다운로드를 참조하십시오.

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr, publishers p
      WHERE p.pub_id = pr.pub_id 
      AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO