다음을 통해 공유


SET_BIT(Transact SQL)

적용 대상:Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL Server 2022(16.x) Azure SQL Database Azure SQL Managed InstanceSQL 분석 엔드포인트

SET_BIT bit_offset정의된 비트로 expression_value 오프셋을 반환합니다. 비트 값은 기본적으로 1로 설정되거나 bit_value에 의해 설정됩니다.

Transact-SQL 구문 표기 규칙

구문

SET_BIT ( expression_value, bit_offset ) 
SET_BIT ( expression_value, bit_offset, bit_value )

인수

expression_value

LOB(큰 개체)가 아닌 정수 또는 이진 식입니다.

bit_offset

임의의 정수입니다.

반환 형식

expression_value 형식과 동일합니다.

bit_offset 매개 변수는 설정할 데이터의 n번째 비트를 식별하는 데 사용됩니다. 정수 형식에서 0번째 비트는 가장 중요하지 않은 비트입니다. 이진 형식에서 0번째 비트는 가장 오른쪽 바이트에서 가장 유의미한 비트입니다.

bit_value는 정수 또는 비트일 수 있습니다. 그러나 데이터 형식에 관계없이 bit_value의 유효한 값은 1과 0뿐입니다. SET_BIT는 bit_value가 1 또는 0 또는 null이 아니면 오류를 발생합니다.

SET_BIT는 bit_offset이 데이터 형식의 마지막 비트보다 크거나 음수이면 오류를 발생합니다.

설명

연결된 서버 내의 비트 조작 함수 또는 임시 쿼리(OPENQUERY)에 대한 분산 쿼리 기능은 지원되지 않습니다.

데이터베이스 엔진의 LOB(큰 개체) 데이터 형식은 8,000바이트를 초과하는 데이터를 저장할 수 있습니다. 이러한 데이터 형식은 행 오버플로 데이터 페이지에 데이터를 저장합니다. LOB는 LOB 데이터 페이지에 대한 행 내 참조의 텍스트 또는 이미지 포인터를 사용하는 전용 LOB 페이지 구조에 데이터를 저장하는 데이터 형식도 포함합니다. 데이터 스토리지에 대한 자세한 내용은 페이지 및 익스텐트 아키텍처 가이드참조하세요.

비트 조작 함수는 tinyint, smallint, int, bigint, binary(n)varbinary(n) 데이터 형식에서 작동합니다. LOB(큰 개체) 데이터 형식, varchar(max), nvarchar(max), varbinary(max), 이미지, ntext, 텍스트, xml및 CLR(공용 언어 런타임) BLOB 형식은 지원되지 않습니다.

A. SET_BIT를 사용하여 값 수정

이 예제에서는 세 번째 비트(오프셋 2, 0부터 시작하는 인덱스)가 1로 설정됩니다.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

결과는 0x04입니다. 이는 0x000000으로 변환되기 때문입니다. SET_BIT는 세 번째 비트(오프셋 2)를 1로 변경하여 0100을 만듭니다. 이 이진 값은 16진수 표현과 같이 4로 반환됩니다.

B. SET_BIT를 사용하여 사용자 지정 bit_value으로 값 수정

이 예제에서는 bit_value가 기본값인 1이 아닌 0으로 설정됩니다.

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

결과는 0xABCDEE입니다. expression_value는 이진인 1010 1011 1100 1101 1110 1111로 변환됩니다. SET_BIT는 첫 번째 비트를 0으로 변경하고 결과는 16진수 형식으로 반환됩니다.