我有两个表,TableA而TableB像这样:
TableA
-------------------------------------------
| id | some_data | new_FK_column_on_B |
| ---- | ----------- | ------------------ |
| 1 | ... | null |
| ... | ... | null |
| 999 | ... | null |
-------------------------------------------
TableB
----------------------------
| id | some_other_data |
| ---- | ----------------- |
| | |
----------------------------
Run Code Online (Sandbox Code Playgroud)
此刻,TableB是空的,FK列TableA是null对所有行。我需要编写一次初始化脚本TableB,以便TableA通过插入的行中的标识符填充和初始化某些行(标准的,不是全部)的FK列TableB。
我知道两种方法可以做到这一点:
1)使用while和scope_identity(),将新行插入TableB并 …
我需要修改(!不是切换异或!)字节值中的特定位。我有:
byte(例如b11010010);4);0位(或)的新值1。现在,我需要什么。如果新值为0,则位[4] 必须设置为0。如果新值为1,则位[4] 必须设置为1。
通用部分:
var bitIndex = 4;
var byte = b11010010;
var mask = 1 << bitIndex;
var newValue = 1;
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法:
if(newValue == 1)
byte |= mask; // set bit[bitIndex]
else
byte &= ~mask; // drop bit[bitIndex]
Run Code Online (Sandbox Code Playgroud)
另一种方法允许在不if else声明的情况下执行此操作,但看起来很难理解:
byte = byte & ~mask | (newValue << bitIndex) & mask
Run Code Online (Sandbox Code Playgroud)
这里,第一个AND删除bit[bitIndex],第二个 …