0

アプリケーションを MySQL から SQL Server に変換する必要があります。

NOW()LCASE()MATCH() AGAINST()などの MySQL データベース関数を含む多くのハードコーディングされたクエリがあり、これらは SQL Server と同等ですが、構文と構造が異なります。

使いやすそうなのでPropelを選びました。

Propel クラスを拡張して、 NOW() {MySQL}GETDATE() {SQL Server}などのデータベース関数をエミュレートする方法を探しています。

私はこのようなことを考えます:

$result = Function::NOW(); // MySQL
$result = Function::GETDATE(); // SQL Server

関数がLCASE() {MySQL}LOWER() {SQL Server}などのパラメーターを受け入れる場合、次のようになります。

$table = new MyTable();
$result = Function::LCASE($table->getName()); // MySQL
$result = Function::LOWER($table->getName()); // SQL Server

また

$table = new MyTable();
$result = Function::MD5($table->getPassword()); // MySQL
$result = Function::HASHBYTES('MD5', $table->getPassword()); // SQL Server

完全な解決策は、異なるデータベース (MySQL と SQL Server) から同じ目的を持つ 2 つの関数間で等価性を作成できる場合です。

したがって、 PHP コードでFunction::HASHBYTES()を使用する代わりに、常にFunction::MD5()を使用できます。これは、より単純であり、アプリケーションが SQL Server データベースに接続されている場合、内部的にHASHBYTES()が呼び出されます。

4

0 に答える 0