[急]如何实现二进制字符串按位"与"的操作?

smartyyp 2006-10-25 03:37:14
例如:
declare @A1='10000000001111111111'
declare @A2='11000000001111001111'
如何做按位"与"的操作,得到'10000000001111001111'

有没有这样的高效自定义函数?

注:不能用SQL自带的"&",因为我的字符串太长有几百位,不能传换成int
...全文
368 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2006-10-28
  • 打赏
  • 举报
回复
自己写一个function
xyxfly 2006-10-28
  • 打赏
  • 举报
回复
to:i9988(冒牌j9988 V0.3)


函数的效率一直是问题


这个有没有什么说法的?
i9988 2006-10-28
  • 打赏
  • 举报
回复
没有高招,函数的效率一直是问题
marco08 2006-10-26
  • 打赏
  • 举报
回复
學習
smartyyp 2006-10-25
  • 打赏
  • 举报
回复
如果数据量大(100000),而且二进制的位数在500位怎么办
i9988 2006-10-25
  • 打赏
  • 举报
回复
函数是没效率可言的,所以除非必要而且数据量不大,才用函数

函数改进效率的余地不大

smartyyp 2006-10-25
  • 打赏
  • 举报
回复
写成函数为什么执行效率这么低
i9988 2006-10-25
  • 打赏
  • 举报
回复
注意:
结果长度以第一个串长度决定,如果第二个串长度小于第一个串,不足的位都是返回0,如果第二个串长度大于第一个串,只返回第一个串长度的串

pdgzzgx 2006-10-25
  • 打赏
  • 举报
回复
都是对的 我学习了
九斤半 2006-10-25
  • 打赏
  • 举报
回复
declare @A1 nvarchar(2000),@A2 nvarchar(2000)
set @A1='10000000001111111111'
set @A2='11000000001111001111'

declare @i int,@result nvarchar(2000)
select @i=1,@result=''

while @i<=len(@A1)
begin
if substring(@A1,@i,1)=1 and substring(@A2,@i,1)=1
set @result=@result+'1'
else
set @result=@result+'0'

set @i=@i+1
end

print @result
i9988 2006-10-25
  • 打赏
  • 举报
回复
自己写

create function fn_And(
@A1 varchar(300),
@A2 varchar(300)
)
returns varchar(300)
as
begin
declare @r varchar(300)
set @r=''
while len(@A1) >0
begin
set @r=@r+cast(cast(left(@A1,1) as tinyint) & cast(left(@A2,1) as tinyint) as varchar)
set @A1=stuff(@A1,1,1,'')
set @A2=stuff(@A2,1,1,'')
end
return @r
end

--调用
declare @A1 varchar(300)
set @A1='10000000001111111111'
declare @A2 varchar(300)
set @A2='11000000001111001111'

select dbo.fn_and(@a1,@a2)

--结果

-------------------------------------------------------------------------------------10000000001111001111

(所影响的行数为 1 行)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧