T-SQL에서 비트 필드를 뒤집는 방법은 무엇입니까?
업데이트 쿼리를 사용하여 SQL Server에서 비트 필드를 뒤집으려고합니다. 즉, 모든 0을 1로 만들고 반대도 마찬가지입니다. 가장 우아한 솔루션은 무엇입니까?
T-SQL에는 비트 NOT 연산자가없는 것 (명백한 것이 누락되지 않는 것). 업데이트를 수행하는 다른 방법을 사용할 수 없습니다.
작성하기 위해 비트가 필요하지 않습니다. 1 / true로 XOR하십시오.
확인 광고 :
select idColumn, bitFieldY, bitFieldY ^ 1 as Toggled
from tableX
업데이트 비용 :
update tableX
set bitFieldY = bitFieldY ^ 1
where ...
왜 단순 하지 보안 bitfield = 1 - bitfield
보장?
또 다른 방법은
DECLARE @thebit bit = 1, @theflipbit bit
SET @theflipbit = ~ @thebit
SELECT @theflipbit
여기서 "~"는 "NOT"연산이 의미합니다. 깨끗하고 읽기 좋은 코드를 얻습니다. "비트 부정 행위"는 훨씬 더 깨끗하며 "NOT"라고 정확하게 작동합니다.
나는 대부분의 SQL 플레이버에 비트가 아니고 확실하게 확인하고 TSQL에 하나가있는 것 입니다.
문서에서 문자 ~
입니다.
UPDATE tblTest SET MyBitField = CASE WHEN MyBitField = 1 THEN 0 ELSE 1 END
평범하지만 모든 사람들이 무엇을하고있는 것입니다.
편집하다 :
주석에 제안 된대로 null을 할 수도 있습니다. 물론 귀하의 요구 사항에 따라 증가합니다.
UPDATE tblTest SET
MyBitField = CASE
WHEN MyBitField = 1 THEN 0
WHEN MyBitField = 0 THEN 1
ELSE NULL -- or 1 or 0 depending on requirements
END
간단한 비트 NOT 연산자 (~)가 SQL Server 2014-12.0.2269.0에서 저에게 맞는군요.
T-SQL 내부의 업데이트 절에서-
Update TableName
SET [bitColumnName] = ~[bitColumnName],
....
WHERE ....
도움이 되셨기를 바랍니다.
참조 -https : //docs.microsoft.com/en-us/sql/t-sql/language-elements/bitwise-not-transact-sql
이거 해봤 어?
UPDATE mytable SET somecolumn =
CASE WHEN somecolumn = 0 THEN 1
WHEN somecolumn IS NULL THEN NULL
WHEN somecolumn = 1 THEN 0
END
질의 (vb)
x = "select x from table"
업데이트 (vb)
"update table set x=" Not(x*(1))
참고 URL : https://stackoverflow.com/questions/1397332/how-to-flip-bit-fields-in-t-sql
'ProgramingTip' 카테고리의 다른 글
C #에서 전화를 설치면 어떻게됩니까? (0) | 2020.11.09 |
---|---|
부트 버튼 라디오 버튼 토글 문제 (0) | 2020.11.09 |
"Uncaught SyntaxError : Unexpected token {" (0) | 2020.11.09 |
FilteredArrayUsingPredicate가 배열에 존재하지 않습니다. (0) | 2020.11.09 |
Python2.7의 unittest에서 assertRaises ()에 의해 생성 된 오류 메시지를 표시하는 방법은 무엇입니까? (0) | 2020.11.09 |