我在Attorney表中有一个Options列(不幸的是)由二进制标志组成,如下所示:
0x0000000100010400010000000000000000000000
我需要做一些事情(即将第4和第6个位置的所有标志设置为'0'):
update attorney
set substring(Options,4,1) = 0x00,
substring(Options,6,1) = 0x00
where customercode in ('36526', '50015')
但这不起作用。
答案 0 :(得分:0)
这是糟糕的数据库设计。它违反了第一范式。而不是将所有这些属性放在一个列中,每个属性应该在一个单独的表中有自己的行。因此,“律师”表将包含每个律师的“客户代码”列和其他非重复信息。还会有一个“选项”表,如下所示:
customercode optionsOn
36526 option1
36526 option2
50015 option3
50015 option23
“optionsOn”列包含给定客户代码具有“1”值的选项。
答案 1 :(得分:0)
正如paqogomez建议的那样,我需要设置整个列值。我的主管同意并帮助我解决了以下问题:
update attorney
set Options = substring(Options,1,3) + ‘0x00’ + substring(Options,5,1) + ‘0x00’ + substring(Options,7,len(Options))
where customercode in ('36526', '50015')