请教高手,在T-SQL中如何求一个数是2的N次幂?

sosdream 2009-07-20 11:52:45
比如我获得了一个已知的数值 @num ,它肯定是2的N次幂,我需要求出这个N的值来。
但是 @num 是不确定的,所以需要使用一个类似于Oracle 中的函数 LOG(m, n) 来求 数值@num 以2为底的对数。
查阅了SQL Server的联机帮助,发现数学函数中只有 LOG() 和LOG10() 两个,没有求任意数的对数的函数。
请高手指点一下,有没有什么方法?如果自己写一个函数,应该怎么写呢?
...全文
192 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyqwan11112 2009-07-20
  • 打赏
  • 举报
回复
呵呵,楼主已经找到方法了
仙道彰 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sql77 的回复:]
引用 3 楼 sosdream 的回复:
我已经知道怎么计算了,谢谢楼上的兄弟!
其实挺简单的,刚才在C/C++区看到的:
declare @N int;
set @N = LOG(@num)/LOG(2);


哎,忘了高中的知识呀
[/Quote]

忘了
feixianxxx 2009-07-20
  • 打赏
  • 举报
回复

--自己写函数
create function kk (
@num int --参数
)
returns int
as
begin
declare @n int
set @n=1
while POWER(2,@n)<>@num
set @n=@n+1
return @n
end
select dbo.kk (64)

-----------
6
hyqwan11112 2009-07-20
  • 打赏
  • 举报
回复
既然有LOG(),和LOG10()就可以了,可以通过对数公式来解决.
feixianxxx 2009-07-20
  • 打赏
  • 举报
回复

--自己写函数
create function kk (
@num int --参数
)
returns int
as
begin
declare @n int
set @n=1
while POWER(2,@n)<>@num
set @n=@n+1
return @n
end
select dbo.kk (64)

-----------
6
SQL77 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sosdream 的回复:]
我已经知道怎么计算了,谢谢楼上的兄弟!
其实挺简单的,刚才在C/C++区看到的:
declare @N int;
set @N = LOG(@num)/LOG(2);

[/Quote]
哎,忘了高中的知识呀
sosdream 2009-07-20
  • 打赏
  • 举报
回复
我已经知道怎么计算了,谢谢楼上的兄弟!
其实挺简单的,刚才在C/C++区看到的:
declare @N int;
set @N = LOG(@num)/LOG(2);
feixianxxx 2009-07-20
  • 打赏
  • 举报
回复
declare @num int,@n int
set @num=64
set @n=1
while POWER(2,@n)<>@num
set @n=@n+1

select @n

-----------
6
SQL77 2009-07-20
  • 打赏
  • 举报
回复
EXP()函数

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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