2013-11-26 4 views
0

Я работаю над миграцией базы данных ... где я изменяю запросы по SQL. , поэтому запросы должны работать во всех базах данных. вот запрос, который я могу сделать для работы во всех базах данных.Есть ли способ работать как целое в sql-сервере во всех базах данных

select STD_ID from SCHOOL order by cast(STD_ID as integer) 

Это запрос работает нормально в SQL Server 2008, но он не работает MySQL, есть ли способ изменить выше запроса, который должен работать на всех базах данных.

+0

Непонятно, что вы спрашиваете. Вы ищете запрос, который работает как в SQL Server, так и в MySQL? Это можно сделать, но нам нужно знать больше, чтобы помочь вам. Можете ли вы поделиться инструкцией CREATE TABLE для SCHOOL и некоторыми инструкциями INSERT с образцами данных? –

+0

использовать 'SIGNED' или' UNSIGNED' для mysql. – OGHaza

+1

[Невозможно использовать один запрос для обоих без изменения семантики] (http://stackoverflow.com/a/8895995/73226). 'cast (STD_ID as DECIMAL (10,0))' будет работать в обоих случаях, но может вызвать другие проблемы. –

ответ

1

Предполагая STD_ID является какой-то строки, вы можете использовать:

select STD_ID from SCHOOL order by STD_ID+0 

Я испытал это на SQLFiddle как с MySQL и SQLServer, и они оба, кажется, правильно сделать неявное приведение к INT ,

+0

+1 Довольно противно, но работает! –

0

Вы, вероятно, следует искать в документации MySQL о кастинге: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast

Это выглядит как «целое», называется «подписан» (или, конечно, «без знака») в MySQL.

Я не мастер (мой) SQL, но поиск Google для «mysql cast to integer» дал вышеизложенное.

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