0

我需要将应用程序从 MySQL 转换为 SQL Server。

有许多涉及 MySQL 数据库函数的硬编码查询,例如NOW()LCASE()MATCH() AGAINST(),它们在 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)的具有相同目的的两个函数之间创建等价。

因此,我可以始终使用Function::MD5()而不是在我的 PHP 代码中使用Function::HASHBYTES( ) ,因为它更简单,并且当我的应用程序在内部连接到 SQL Server 数据库时,HASHBYTES()被调用。

4

0 回答 0