我想将像'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);
“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