为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows
【CPU】:x86
【问题描述】*:如题迁移中遇到的函数适配问题
MySQL中INET_ATON()、INET_NTOA函数
使用达梦自定义函数实现,自定义函数定义如下:
CREATE OR REPLACE FUNCTION INET_ATON( F_ADDRESS IN VARCHAR2 ) RETURN NUMBER
AS
O_ADDRESS_NUMBER NUMBER;
BEGIN
SELECT
TO_NUMBER(REGEXP_REPLACE(F_ADDRESS, '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})', '\1')) * 16777216 +
TO_NUMBER(REGEXP_REPLACE(F_ADDRESS, '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})', '\2')) * 65536 +
TO_NUMBER(REGEXP_REPLACE(F_ADDRESS, '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})', '\3')) * 256 +
TO_NUMBER(REGEXP_REPLACE(F_ADDRESS, '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})', '\4')) INTO O_ADDRESS_NUMBER;
RETURN O_ADDRESS_NUMBER;
END INET_ATON;
CREATE OR REPLACE FUNCTION INET_NTOA( F_ADDRESS_NUMBER IN NUMBER ) RETURN VARCHAR2
AS
O_ADDRESS VARCHAR2;
BEGIN
SELECT TRUNC ( F_ADDRESS_NUMBER / 16777216 ) || '.' || TRUNC ( MOD ( F_ADDRESS_NUMBER, 16777216 ) / 65536 ) || '.' || TRUNC ( MOD ( F_ADDRESS_NUMBER, 65536 ) / 256 ) || '.' || TRUNC ( MOD ( F_ADDRESS_NUMBER, 256 ) ) INTO O_ADDRESS;
RETURN O_ADDRESS;
END INET_NTOA;
https://blog.csdn.net/weixin_44158741/article/details/110469648
可以参考这个帖子