to_number() 的兼容性查询

kar*_*A.M 2 mysql oracle

在这个查询中使用的to_number()是oracle。如何编写oracle和mysql数据库的兼容性查询。

SELECT col1 FROM table WHERE condition ORDER BY TO_NUMBER(col2);
Run Code Online (Sandbox Code Playgroud)

col2varchar2数据类型。假设我在这个查询中使用ORDER BY命令必须使用转换函数,即to_number(col2),这个函数在mysql中不可用。所以请为上述问题给出正确的解决方案

Akh*_*hil 5

在 mysql 数据库中创建一个自定义函数,to_number其名称采用相同的参数并返回 integer 。然后您可以在自定义函数中
使用函数cast

DELIMITER $$
DROP FUNCTION IF EXISTS to_number$$
CREATE FUNCTION to_number (number VARCHAR(10)) RETURNS INT (11)
BEGIN
RETURN (CAST(number AS SIGNED));
END$$
DELIMITER ;
这将创建一个以 to_number 作为名称的自定义/用户定义函数
然后您可以在 oracle 和 mysql 中使用您的查询

  • 您不需要在 oracle 中运行。它有 to_number 函数作为内置函数<br>你只需要在 mysql 中通过 sqlyog 执行这个函数,原始查询将在 mysql 和 oracle 中工作 (2认同)