2

このクエリto_number()では、Oracle を使用しています。Oracle および mysql データベースの互換性クエリを作成する方法。

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

ここcol2varchar2データ型があります。ORDER BYこのクエリでコマンドを使用したと仮定すると、変換関数を使用する必要があります。つまりto_number(col2)、この関数はmysqlでは使用できません。上記の問題の正しい解決策を教えてください

4

2 に答える 2

5

to_number同じパラメーターを取り、整数を返す名前で、mysql db にカスタム関数を作成します。その後、カスタム関数内で関数を
使用できます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 に答える