int 00000001 老企业
int 00000010 新企业
int 00000100 联系方式完整
int 00001000 联系方式不完整
int 00010000 内容完整
int 00100000 内容不完整
int 01000000 有产品
int 10000000 无产品
这几个状态都可以组合起来表示一个企业的状态。如有产品的,内容完整的,联系方式不完整的老企业。其状态值是01011001。
现在我要查询老企业的记录,“01011001”状态值表明企业是老企业,而老企业的状态值是“00000001”。sql 语句select * from c where state ???????????????? 00000001请高手赐教。
int 00000010 新企业
int 00000100 联系方式完整
int 00001000 联系方式不完整
int 00010000 内容完整
int 00100000 内容不完整
int 01000000 有产品
int 10000000 无产品
这几个状态都可以组合起来表示一个企业的状态。如有产品的,内容完整的,联系方式不完整的老企业。其状态值是01011001。
现在我要查询老企业的记录,“01011001”状态值表明企业是老企业,而老企业的状态值是“00000001”。sql 语句select * from c where state ???????????????? 00000001请高手赐教。
--是不是这个意思create table tb(
name nvarchar(50),
state varchar(8)
)insert into tb
select '企业A','01011001' union all
select '企业B','10000010' union all
select '企业C','10011001' union all
select '企业D','01010010'
select * from tb where [state] like '______01'name state
-------------------------------------------------- --------
企业A 01011001
企业C 10011001
借用4楼代码:select * from tb where right(state,1)='1'
sql 里这么进行二进制的与运算?
set @n = 123
set @i = 0
set @s = ' '
while @n > = power(2, @i)
begin
set @s = case when @n & power(2, @i) > 0 then '1 ' else '0 ' end + @s
set @i = @i + 1
end
select @s --1111011 按位与,运算符&,比较结果是否大于0http://topic.csdn.net/t/20061019/16/5094765.html