如何在Oracle中将字节字符串转换为数字?

| 我想将\'1001 \'这样的字节字符串转换为整数9,在Oracle中是否有标准函数? 顺便说一句,我在http://www.orafaq.com/wiki/Binary上找到了一个自定义解决方案     
已邀请:
        虽然AFAIK在Oracle中没有内置功能,但是您可以使用帖子中链接提供的解决方案     
        我在
Oracle
上尝试使用
CONNECT BY
在简单的
SELECT
语句中将二进制转换为十进制。最终使用以下代码获得了所需的输出。
WITH INPUT AS
(SELECT REVERSE(\'&N\') AS X FROM DUAL)
SELECT SUM(TO_NUMBER(SUBSTR(X,LEVEL,1)*POWER(2,LEVEL-1))) AS OUTPUT
FROM INPUT CONNECT BY LEVEL<=LENGTH(X);
    
        有关进行这些类型转换的信息,请参见Tom Kyte的库。 在这种情况下,您将拥有:
select to_dec(\'1001\', 2) from dual;
    
           \“ Oracle中是否有标准功能?\” 有BIN_TO_NUM可以将位向量转换为其等效数字。
SET SERVEROUTPUT ON;
DECLARE
  i VARCHAR2(100) := \'1001\';
  o INT;
BEGIN
  i:= TRIM(BOTH \',\' FROM REPLACE(REPLACE(i, \'1\', \'1,\'),\'0\',\'0,\')); 
  EXECUTE IMMEDIATE \'SELECT BIN_TO_NUM(\'|| i || \') FROM dual\' INTO o;
  DBMS_OUTPUT.put_line(i || \' => \' || o);
END;
/
结果:
1,0,0,1 => 9
DBFiddle演示     

要回复问题请先登录注册