2013-07-22 3 views
2

В этом запросе с использованием to_number() в oracle. Как написать запрос совместимости для баз данных oracle и mysql.Совместимость Запрос для to_number()

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

Здесь col2 является varchar2 тип данных. Предположим, что я был использован ORDER BY команды в этом запросе необходимо использовать функцию преобразования т.е. to_number(col2), эта функция не доступна в mysql.so пожалуйста, дайте правильное решение для указанной задачи

ответ

2

Создать пользовательскую функцию в вашей БД MySQL с именем to_number который принимает тот же параметр и возвращает целое число.
Вы можете использовать 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 ;
Это позволит создать пользовательский/UserDefined функцию с to_number как п AME
Затем вы можете использовать ваш запрос как в оракула и MySQL

+0

как создавать пользовательские функция в mysql и oracle.i хочу писать один и тот же запрос для обеих баз данных. Пожалуйста, кратко объясните –

+0

Отредактированный мой ответ с объяснением – Akhil

+0

Akil please r eply, где я создаю функцию выше. Я использую Windows XP, sqlyog-инструмент для mysql, toad tool for oracle. –

1

Вы можете сделать это с CAST

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

SQL Скрипки link

Для получения дополнительной информации: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

+0

SELECT * FROM COMMBRANCH ORDER BY CAST (MBRNORDERNO AS SIGNED) этот запрос работал в mysql.but не работал в oracle. Поскольку SIGNED недействителен, datatype.it выдает ошибки. Расскажи другое –

Смежные вопросы