如何更改由二进制标志组成的sql列?

时间:2014-07-21 23:48:50

标签: sql binary

我在Attorney表中有一个Options列(不幸的是)由二进制标志组成,如下所示:

0x0000000100010400010000000000000000000000

我需要做一些事情(即将第4和第6个位置的所有标志设置为'0'):

update attorney
set substring(Options,4,1) = 0x00,
    substring(Options,6,1) = 0x00
where customercode in ('36526', '50015')

但这不起作用。

2 个答案:

答案 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')