代表的なRDB(MsSQL/Oracle/DB2...)はSQL92準拠といわれてます。ここの方言を省けばSQL92で記述すれば可搬性は高いようです。しかし、不便を強いられる局面もあります。
一方、SQLの規約では SQL99というISO/ANSI標準がありますが、実装さてれているDBを知りません。
個々の製品の方言が強く固まった現状ではSQL99準拠にするのは無理が生じる気がします。だとしたら何のための標準規約だったのかと思ってしまいます。
Object_DBも期待したほどは開花していないようです。
業務システムは個々製品の方言を前提にしたシステム設計を行っているケースが多く、システムを異なるRDBに移植するとなったら結構なコストが嵩むことがあります。
(例)・ 伝票番号の採番に Oracleにならば、シーケンスを用い、SqlServerならIndentityを用いる
・楽観的排他ロックの制御キーにOracleなら更新日などの項目を用いるし、SqlServerならTimeStampを用いる
など特有の機能を前提としてます。
固有企業特有のアプリであれば、RDBを変えることは無いのかもしれません。
しかし作成したアプリを同種の仕様要求のシステムに横展開するとき、先様のDBがことなっていたら、固有の部分の再作成になりますし、仕組みの見直しの必要が出るかもしれません。
メーカーの販売戦略で統一化は難しいのかもしれません。
・SSのTimeStamp的な更新情報の保障された項目
・SSのIdentity のautonumber項目
・Oracleの Where句の 正規表現検索
その他
・差集合や Xor集合, and 集合 が 1文で書けたり,複問い合わせが必要だったりする
・Top n個の抽出が 1文で書けたり,複問い合わせが必要だったりする
業務アプリでは必然項目が、RDBによって違うというのも理不尽で冗長な作業を強いられている気がするのです。
MSも独自拡張が好きなので困ることがあります。
正規表現なども POSIX表記[:lower:] が怪しかったり, 逆に [1-9]-[2-3] で[1-9]から'(2,3)を除く など引き算を可能にした部分はGOODだと思います。
なんだかんだと言っても、業界全体のメリットより企業メリットが優先されるんでしょうかね。