这是我的问题(下面将是答案)
我需要根据另一个数据库中另一个表中另一列的条目更新位列。所以我的表结构看起来像:
DB1.Table1 (
field1 int IDENTITY (1,1) PRIMARY KEY
,field2 varchar (50)
,field3 bit
DB2.Table2 (
fieldA int IDENTITY (1,1) PRIMARY KEY
,fieldB varchar (50)
,fieldC varchar (50)
DB2,Table2,fieldC将条目存储为Y或N,我需要在位列DB1,Table1,field3中将其转换为1或0
我写了这段代码来实现这个目标:
USE DB1
GO
UPDATE Table1
SET field3 = field3 - (CASE WHEN [fieldC] = 'Y' THEN 1 ELSE 0 End)
FROM Table1
INNER JOIN DB2.Table2 ON fieldA = field1
我会执行,我会收到一条消息,说明有很多记录被更新但是当我检查我的DB1,Table1,field3时,一切都是NULL。
我看了这段代码一天半。请参阅下面的我对这个问题的答案。
答案 0 :(得分:0)
问题不在于代码。位列没有默认设置,我发现这会导致一些问题,比如这个问题。一旦我更改了表结构以设置位列的默认值,代码就可以正常工作。
答案 1 :(得分:0)
使用布尔逻辑写入位
set field3 = fieldC = 'Y'