如何查询数据库是二进制还是十进制

如何查询数据库是二进制还是十进制,第1张

数据库的二进制是一种排序规则,并不是数学运算规则。

如果想知道是不是采用了这种规则,可以查看数据库属性--排序

如果结果是以_bin结尾的是二进制。

也可以执行语句来得到结果。

SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'))

--十进制转其他进制函数

create or replace function to_base( p_dec in number, p_base in number )

return varchar2

is

l_str varchar2(255) default NULL

l_num number default p_dec

l_hex varchar2(16) default '0123456789ABCDEF'

begin

if ( trunc(p_dec) <>p_dec OR p_dec <0 ) then

raise PROGRAM_ERROR

end if

loop

l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str

l_num := trunc( l_num/p_base )

exit when ( l_num = 0 )

end loop

return l_str

end to_base

--其他进制转十进制

create or replace function to_dec ( p_str in varchar2, p_from_base in number default 16 )

return number

is

l_num number default 0

l_hex varchar2(16) default '0123456789ABCDEF'

begin

for i in 1 .. length(p_str) loop

l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1

end loop

return l_num

end to_dec

说步骤太抽象,给你举个例子吧

比如:1282

10进制转换2进制

1282÷2=641……0

641÷2=320……1

320÷2=160……0

160÷2=80……0

80÷2=40……0

40÷2=20……0

20÷2=10……0

10÷2=5……0

5÷2=2……1

2÷2=1……0

1÷2=0……1

余数反过来排列便可。

1282的二进制数值为10100000010

转换16进制

二进制每4位代表一个16进制,从低到高:

0010 2

0000 0

0101 5

所以对应16进制是 502

另一种方法是:

1282÷16=80……2

80÷16=5……0

5÷16=0……5

将余数反过来排列即可,就是502

所以1282的十六进制是502

对于任何十进制的数字,按照上面的方法举一反三,相信你已经没有什么困难了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6814010.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存