2

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

SELECT col1 FROM table WHERE condition ORDER BY TO_NUMBER(col2);

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

4

2 回答 2

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 中使用您的查询

于 2013-07-22T05:21:30.547 回答
1

你可以用 CAST 做到这一点

select id,num type, details,CAST(num AS SIGNED) as T 
from demo order by T

SQL 小提琴链接

欲了解更多信息:http ://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

于 2013-07-22T05:27:03.417 回答