こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

OracleとSQL ServerのSQL文上での差異について

お世話になっております。
もしOracleやSQL Serverに関してご存知の方が
いらっしゃいましたらご教授ください。

今、業務で
「Oracleに載せるシステムをSQL Serverで載せられないか?」
という話が出ており私が調査を行う事になりました。

しかし私のSQL Server経験が浅い為困っている点があります。
(以下の質問は当然ですがシステムで動く・動かない
の話はヌキにしてのSQLレベルでの話です)

・Oracle特有のSQL構文をSQL Serverに見合った構文に
直すことによって(DATE→datetime/NUMBER→int等)一般的な
SELECT文、INSERT、UPDATE、DELETE文はそのまま使う事が可能か?

・上の件に関する経験をお持ちの方・知識のある方にお聞きしますが
何かこの件に関する注意点などありますでしょうか?

の2点になります。
どうかご存知の方がいらっしゃいましたらお願い致します。

投稿日時 - 2005-10-03 13:15:42

QNo.1689106

暇なときに回答ください

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

SQLはOracleであってもSQLServerでも基本的に同じです。
基本的にOracleと違うのはSQLServerは一つのインスタンスに複数のデータベースを対応させられる。
>Oracle特有のSQL構文をSQL Serverに見合った構文に・・一般的なSELECT文、INSERT、UPDATE、DELETE文はそのまま使う事が可能か?

Oracle固有の関数はSQL-Serverでは使用できませんがその辺を考慮すればSELECT文、INSERT、UPDATE、DELETE文は使えます。
Oracleで日付を取るときはご存知のようにSYSDATE、SQLServerではSYSDATEのかわりにGETDATE関数を使います。
OracleのDATE型では秒単位までなのに対してSQLServerのDATETIME型は秒以下のレベルもある。Oracleでは日付データにTRUNC関数を使うことで日時の情報だけを取り出せますSQLServerでは時刻を切り捨てる関数はないのでconvertを使ったりします。でもSQLServerはDATEDIFF・DATEPART・DAY・MONTH・YEARを使って加算したり抜き出したりできる。
NULLの置き換えはOracleはNULLを置き換えるときにNVL関数を使いまがSQLServerではISNULL関数を使って記述します。
以上の様な使える関数と構文の違いを考慮すれば一般的なSQLは使えます。

投稿日時 - 2005-10-04 10:57:01

ANo.1

"一般的な"がどういった内容をを指すのか分からないのですが、
そっくりそのまま、はできません。
Oracleの、例えば"(+)"はSQLServerでは使えない、など。

参考URLに、やや古いですが、関連記事のあるサイトを挙げます。
お使いの開発ソフトにも拠るとは思いますが、
いくらか、考察の助けになるのではないでしょうか?

参考URL:http://www.itmedia.co.jp/enterprise/0307/25/epn20.html

投稿日時 - 2005-10-03 13:40:27

お礼

現在、参考URLの方を拝見しておりますが
大変勉強になっております。

大変参考になりました。
ありがとうございます。

投稿日時 - 2005-10-03 14:41:35

あなたにオススメの質問