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

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

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

注:不能用SQL自带的"&",因为我的字符串太长有几百位,不能传换成int
...全文
457 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 行)

源码直接下载地址: https://pan.quark.cn/s/854bd57df23a 在金融行业中,房产购置贷款是众多人在购置不动产时必须进行的一项财务规划。Matlab作为一种功能强大的数学及数据分析平台,经常被应用于各类复杂的运算,其中包括住房贷款的计算。本文将详细研究运用Matlab开发住房贷款计算程序的相关知识要点,以协助读者掌握如何借助编程技术处理实际的信贷问题。 1. **信贷种类** - **商业信贷**:此类贷款通常由金融机构提供,其利率会随市场行情变化,借款人可选用固定利率或浮动利率方案。 - **公积金信贷**:该类贷款获得政府机构的支持,利率一般低于商业信贷,但设有最高贷款金额的限制。 2. **偿付模式** - **等额本金偿付**:每月支付相同数量的本金,利息部分逐月减少,因此整体还款总额会逐步降低。 - **等额本息偿付**:每月支付固定金额的本金与利息组合,利息部分随本金的逐月减少而递减。 3. **住房贷款计算公式** - **等额本息偿付**:每月还款额=贷款本金×[月利率×(1+月利率)^(贷款期数)]÷[(1+月利率)^(贷款期数)-1]。 - **等额本金偿付**:每月应还本金=贷款总额/贷款期数,每月利息=(贷款余额-累计已还本金)×月利率。 4. **Matlab编程基础** - **变量设定**:在Matlab环境中,首要任务是设定贷款数额、年化利率、贷款时长等核心参数。 - **循环控制结构**:借助for循环来模拟每个还款周期的过程,进行本金与利息的计算。 - **函数构建**:将住房贷款的计算逻辑封装为函数,便于重复使用和测试不同条件下的结果。 5. **Matlab代码编写** - **等额本息函数实现**...

34,876

社区成员

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

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