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

String 如何在Oracle中将字节字符串转换为数字?,string,oracle,byte,String,Oracle,Byte,我想将像“1001”这样的字节字符串转换为整数值9,Oracle中是否有用于此的标准函数 顺便说一句,我在上找到了一个自定义的解决方案。Oracle中没有内置的函数,尽管您可以使用文章链接中提供的解决方案来执行这些类型转换 在这种情况下,您将有: select to_dec('1001', 2) from dual; 我在Oracle上尝试使用CONNECT BY在简单的SELECT语句中将二进制转换为十进制。最后使用下面的代码获得了所需的输出 WITH INPUT AS (SELECT RE

我想将像“1001”这样的字节字符串转换为整数值9,Oracle中是否有用于此的标准函数


顺便说一句,我在

上找到了一个自定义的解决方案。Oracle中没有内置的函数,尽管您可以使用文章链接中提供的解决方案来执行这些类型转换

在这种情况下,您将有:

select to_dec('1001', 2) from dual;
我在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);
Oracle中是否有用于此的标准函数

有一种方法可以将位向量转换为它的等价数

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

谢谢你的回答,现在我只使用二进制wiki页面上描述的信息。